将String转换为Float并未在iOS中提供准确的值

时间:2015-08-04 10:45:06

标签: ios objective-c nsstring cgfloat

我在Objective-C中编写了一个样本将字符串转换为float

NSString *sampleFloatString = @"1.3";
float sampleFloatValue = [sampleFloatString floatValue];

但是当我显示sampleFloatValue时,它会显示'1.29999995'。我知道它等于1.3,但为什么它不完全是'1.3'?为什么我们需要明确地格式化它?还有其他方法可以进行此转换吗?

3 个答案:

答案 0 :(得分:3)

它被称为"浮点错误"。计算机表示十进制数字的方式导致它们始终不是100%准确:

http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

答案 1 :(得分:2)

试试这个

float sampleFloatValue = (float) sampleFloatString;

希望它有所帮助。

答案 2 :(得分:1)

如果你只是想在某个地方展示这些价值而不是你可以做到这些,它会显示1.3精确..

NSString *sampleFloatString = @"1.3";
float sampleFloatValue = [sampleFloatString floatValue];
NSLog(@"%.1f",sampleFloatValue);