如何避免在NSNumberFormatter中舍入 [英] How to avoid rounding off in NSNumberFormatter

查看:132
本文介绍了如何避免在NSNumberFormatter中舍入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用一个最大2位小数精度的数字字符串,而其余小数只是修剪掉而不是将它们四舍五入。例如:



我有:123456.9964



我想:123456.99 - >只是想修剪小数点的其余部分



我试过的是:



< pre class =lang-cs prettyprint-override> NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
NSString * numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:123456.9964]];
NSLog(@%@,numberAsString);

没有什么可以将舍入模式设置为无。我还能做些什么来保持十进制样式格式以及修剪过的十进制数字?任何帮助将不胜感激。谢谢。

解决方案

以下适用于我:

  NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
//可选 - [numberFormatter setMinimumFractionDigits:2];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
NSNumber * num = @(123456.9964);
NSString * numberAsString = [numberFormatter stringFromNumber:num];
NSLog(@%@,numberAsString);

输出为:123,456.99



部分你的问题是使用 numberWithFloat:而不是 numberWithDouble:。您的号码有太多数字 float


I am trying to have a number string with maximum 2 decimals precision, while rest decimals just trimmed off instead of rounding them up. For example:

I have: 123456.9964

I want: 123456.99 -> Just want to trim rest of the decimal places

What I have tried is:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat: 123456.9964]];
 NSLog(@"%@", numberAsString);

There is nothing to set rounding mode as "none". What else can I do to maintain Decimal style formatting along with trimmed decimal digits? Any help will be appreciated. Thanks.

解决方案

The following works for me:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
// optional - [numberFormatter setMinimumFractionDigits:2];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
NSNumber *num = @(123456.9964);
NSString *numberAsString = [numberFormatter stringFromNumber:num];
NSLog(@"%@", numberAsString);

The output is: 123,456.99

Part of your problem is the use of numberWithFloat: instead of numberWithDouble:. Your number has too many digits for float.

这篇关于如何避免在NSNumberFormatter中舍入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆