【发布时间】:2016-02-02 10:08:44
【问题描述】:
转换成双精度后我的 NSString 值为 28.4701278 我想要与 28.4701278 相同的值
【问题讨论】:
-
那你得到了什么?你尝试了什么?
-
转换成双精度后,我希望双精度值与 28.4701278 相同
-
只是浮点舍入误差。
标签: ios objective-c
转换成双精度后我的 NSString 值为 28.4701278 我想要与 28.4701278 相同的值
【问题讨论】:
标签: ios objective-c
IEEE 754 浮点数(在double 中使用)不能准确地表示每一个十进制数。见:Why don’t my numbers, like 0.1 + 0.2 add up to a nice round 0.3, and instead I get a weird result like 0.30000000000000004?
如果不能接受重要性损失,请使用NSDecimalNumber 而不是double。
【讨论】:
NSString *stringValue = @"28.4701278";
double doubleValue = [stringValue doubleValue];
【讨论】:
简单的尝试
double finalValue = [@"28.4701278" doubleValue];
NSLog(@"final value ==%f",finalValue);
你会得到类似的输出
更新
double finalValue = [@"28.4701273" doubleValue];
NSLog(@"final value ==%f",finalValue);
我得到像这样的输出
编辑
使用NSDecimalNumber 而不是double
NSDecimalNumber *decimalNum= [NSDecimalNumber decimalNumberWithString:@"28.4701273"];
NSLog(@"final ==%@",decimalNum);
输出是
【讨论】: