添加零的浮点数
我需要这样做的右手(不圆,地板或小区):添加零的浮点数
例如:
1.58700023(16位)
预计1.58700000
我正在做这个操作:(值-32768.0)/ 32768转换为(字节值为浮点数的实际值)int他的转换有这个错误= X.00000023或其他
我假设你想实现与原语的舍入。
舍入为小数点后四位,与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的一半来执行舍入到最接近的下一个数字等。
不工作:结果 1.58700023 1.58799997 –
这是很po可能你不能用浮游物来做这件事。请注意,并非所有值都可以精确地表示为float
:毕竟它仅限于32位(通常)。
对于打印,你应该能够使用:
printf("%.3f", 1.58700023);
这将通过四舍五入的值转换成字符串打印1.587
。
这将是一个不错的主意,指出如何比较可以解决(就像你提出了一个打印的修复程序,因为我猜这肯定是一个问题) –
不为我工作:导致 1.58700023 1.58799997 编辑:我使用浮动 –
双作业操作对我的罚款 –
可能重复[浮点数学是否被破坏?](https://*.com/questions/588004/是浮点数学打破) – Olaf