如何舍入一个浮点数?

Posted

技术标签:

【中文标题】如何舍入一个浮点数?【英文标题】:How can I round down a float? 【发布时间】:2010-11-02 05:04:10 【问题描述】:

为了以后的计算,我需要以某种方式将浮点值向下舍入,精度为小数点后两位。

例如,如果我有 0.1098,我需要它变成 0.10,如果我有 0.1176,我需要它变成 0.11。

我想我几乎需要将浮点数截断到小数点后 2 位

【问题讨论】:

【参考方案1】:

通常在将其转换为字符串时进行四舍五入,因为二进制浮点数不能总是准确地表示 2 个十进制数字。要获得 2 位数的 NSString,请使用

[NSString stringWithFormat:@"%.02f", num];

如果您真的想要截断为浮点数以进行进一步计算,请使用类似

((int)(num * 100)) / 100.0

如果你想舍入而不是截断

((int)(num * 100 + 0.5)) / 100.0

【讨论】:

该死的,这么快就回答了!顺便说一句,这是正确的答案。 除非他想向下取整而不向上取整,所以不要加 .5 好吧,我需要将该浮点值传递给一个函数(这是 NSTimer 的时间间隔),所以我是否可以通过调用 [myString doubleValue] 将其转换回双精度值? 没关系,我刚刚注意到您回答的另一部分,谢谢

以上是关于如何舍入一个浮点数?的主要内容,如果未能解决你的问题,请参考以下文章

C中的printf如何对浮点数进行舍入?

JS实现浮点数精确舍入小数点

舍入浮点数的源代码

如何使用 Irvine32 WriteFloat 而非 printf 显示舍入为 .001 的浮点数

1.2浮点数向零舍入

如何在PHP中舍入浮点数?