如何避免在NSNumberFormatter中舍入 [英] How to avoid rounding off in 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屋!