Float在小数点ios后返回零

时间:2015-04-10 11:00:30

标签: ios objective-c iphone

我需要显示精确的小数点。

float value =26/5;

当我记录值时,它显示5.00000我需要它完全是5.2。我也使用双值没什么帮助。

4 个答案:

答案 0 :(得分:4)

float value = 26.0 / 5.0;会这样做。在您的代码中,数字被视为整数,因此除法提供整数结果。

答案 1 :(得分:4)

float value = 26/5;中,分子和分母都是整数,因此将使用整数数学,整数数学通过向下舍入产生一个整数,然后转换为浮点数。

创建一个或两个浮点值,您将得到一个浮点结果:

float value = 26/5.0;

float value = 26.0/5;

float value = 26.0/5.0;

或者您可以使用强制转换而不是更改数字浮点数:

float value = (float)26/(float)5;

请注意,26.0 / 5.0并不完全产生5.2因为5.2不能用浮点精确表示,该值将类似于5.19999980926513671875。这可能会出现问题。

示例:

float value = 26.0/5.0;
NSLog(@"value: %.20f", value);

输出:

  

值:5.19999980926513671875

虽然精度较低的显示器看起来是正确的:

NSLog(@"value: %f", value);

输出:

  

值:5.200000

如果您只想显示两个小数点:

NSLog(@"value: %.2f", value);

输出:

  

值:5.20

答案 2 :(得分:1)

只需在数字后添加.0

float value =26.0/5.0;

将作为float工作,没有.0它们被视为整数。

答案 3 :(得分:0)

当您需要记录或打印时,请使用:[[NSNumber numberWithFloat:someFloatValue] stringValue]; 用户"返回true"说,值是准确的,但如果你想要精确的小数字打印或记录为字符串,你可以使用上面的代码。 并且不要忘记使用26.0 / 5.0,这样你就得到一个小数。