Objective c 为什么float在这个目标C/Cocoa代码中被舍入

Objective c 为什么float在这个目标C/Cocoa代码中被舍入,objective-c,floating-point,Objective C,Floating Point,我正在做一个简单的: float x = 151.185436; printf("x=%f",x); 结果是 x=151.185440 这里怎么了?我想保留并打印我的原值151.185436 谢谢 Amarsh的浮动不是很精确。试试加倍。请阅读以下内容:浮动不是很准确。试试加倍。请阅读以下内容:浮点数不准确,请使用双精度浮点数。此外,由于您使用的是目标C而不是直接C,因此,如果您使用目标C函数来实现此目标,可能会更好: myNumber = [NSNumber numberWithDouble

我正在做一个简单的:

float x = 151.185436;
printf("x=%f",x);
结果是

x=151.185440

这里怎么了?我想保留并打印我的原值151.185436

谢谢
Amarsh的浮动不是很精确。试试加倍。请阅读以下内容:

浮动不是很准确。试试加倍。请阅读以下内容:

浮点数不准确,请使用双精度浮点数。此外,由于您使用的是目标C而不是直接C,因此,如果您使用目标C函数来实现此目标,可能会更好:

myNumber = [NSNumber numberWithDouble:151.185436];
NSLog(@"myNumber = %@", myNumber);

浮点数不准确,请使用双精度浮点数。此外,由于您使用的是目标C而不是直接C,因此,如果您使用目标C函数来实现此目标,可能会更好:

myNumber = [NSNumber numberWithDouble:151.185436];
NSLog(@"myNumber = %@", myNumber);

一个浮点数只能保存32位4字节的数字信息——它不能只存储你需要的小数位数。151.18544尽可能接近浮点数可以表示的值,而不会耗尽位


为了达到您想要的精度,您需要使用双精度而不是浮点数。

浮点数只能保存32位4字节的数字信息-它不能只存储您需要的小数位数。151.18544尽可能接近浮点数可以表示的值,而不会耗尽位


要获得所需的精度,需要使用双精度而不是浮点。

浮点和双精度都不准确-这只是程度的问题。浮点和双精度都不准确-这只是程度的问题。