gpt4 book ai didi

numbers - NSDecimalNumber舍入长整数

转载 作者:行者123 更新时间:2023-12-04 20:57:51 25 4
gpt4 key购买 nike

我正在尝试获取NSDecimalNumber以打印大数字,15个或更多数字。在15位数字处,我看到111,111,111,111,111。在15位数以上,即使要格式化的数字为1111111111111111,我也会看到1,111,111,111,111,110。

一个例子来说明我的问题:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumSignificantDigits:25];
[formatter setUsesSignificantDigits:true];

NSDecimalNumber* test = [NSDecimalNumber decimalNumberWithString:@"12345678901234567890"];

NSString* output = [formatter stringFromNumber:test];
NSLog( @"num value: %@", test );
NSLog( @"str value: %@", output );

输出看起来像:
2010-09-16 09:24:16.783 SimpleCalc[739:207] num value: 12345678901234567890
2010-09-16 09:24:16.784 SimpleCalc[739:207] str value: 12,345,678,901,234,600,000

我错过了什么愚蠢的事情?

最佳答案

这里的问题是NSNumberFormatter在内部不处理NSDecimalNumbers,它们被转换为double,您会看到由此导致的精度损失。从文档中:

The representation encompasses integers, floats, and doubles; floats and doubles can be formatted to a specified decimal position.



您可能应该看看 - (NSString *)descriptionWithLocale:(NSDictionary *)locale上的 NSDecimalNumber方法。

关于numbers - NSDecimalNumber舍入长整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3727142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com