Objective-C浮点数限制为6位小数?

时间:2014-01-28 02:09:12

标签: objective-c c

我有一个Objective-C项目,需要显示0.00000217之类的数字,以及非常小的数字。问题是,Objective-C将其四舍五入到小数点后六位,因此它显示为0.000002。是否有类型可显示更多小数位?我的代码:

float floatValueOfSmallNumber = [value floatValue];
[theLabel setText:[NSString stringWithFormat:@"%f", floatValueOfSmallNumber]];

谢谢!

1 个答案:

答案 0 :(得分:10)

虽然float只有~7个有效小数位,但这不是你在这里遇到的问题;毕竟,0.00000217只有三位有效数字。

您正在使用从C继承并由此定义的%f格式说明符(7.21.6格式化输入/输出函数):

  

表示浮点数的双参数在样式[ - ] ddd.ddd中转换为十进制表示法,其中小数点字符后面的位数等于精度指定。 如果缺少精度,则视为6 ;如果精度为零且未指定#flag,则不显示小数点字符。如果出现小数点字符,则在其前面至少出现一个数字。该值四舍五入到适当的位数。

使用double不会改变这一点;相反,您需要更改格式说明符。如果您不介意科学记数法,可以使用%e%g,但另一种方法是使用精确说明符:%.10f,例如,将打印十位十进制数字。< / p>