添加零的浮点数

问题描述:

我需要这样做的右手(不圆,地板或小区):添加零的浮点数

例如:

1.58700023(16位)

预计1.58700000

我正在做这个操作:(值-32768.0)/ 32768转换为(字节值为浮点数的实际值)int他的转换有这个错误= X.00000023或其他

+0

可能重复[浮点数学是否被破坏?](https://*.com/questions/588004/是浮点数学打破) – Olaf

我假设你想实现与原语的舍入。

舍入为小数点后四位,与10e4相乘,转换为整数(有效截断或去除小数),然后除以浮点值10e4,该值将结果再次转换为浮点数。例如:

#include <stdio.h> 

int main() 
{ 
    double f = 1.58700023; 
    printf("%10.10f\n", f); 

    // Round to 4 decimal places 
    double r = (int)(f*10000.0)/10000.0; 
    printf("%10.10f\n", r); 

    return 0; 
} 

此输出:

1.5870002300 
1.5870000000 

有没有这个程序支持的许多边缘的情况下,虽然。例如,您可能需要添加1/10e4的一半来执行舍入到最接近的下一个数字等。

+0

不工作:结果 1.58700023 1.58799997 –

这是很po可能你不能用浮游物来做这件事。请注意,并非所有值都可以精确地表示为float:毕竟它仅限于32位(通常)。

对于打印,你应该能够使用:

printf("%.3f", 1.58700023); 

这将通过四舍五入的值转换成字符串打印1.587

+0

这将是一个不错的主意,指出如何比较可以解决(就像你提出了一个打印的修复程序,因为我猜这肯定是一个问题) –

+0

不为我工作:导致 1.58700023 1.58799997 编辑:我使用浮动 –

+0

双作业操作对我的罚款 –