【发布时间】:2017-11-18 23:00:51
【问题描述】:
我需要这样做(不是圆形、地板或天花板):
示例:
1.58700023(16 位)
预计 1.58700000
我正在执行此操作: (value-32768.0)/32768 转换为 (byte value to real value in float) int 他的转换有这个错误 = X.00000023 或其他
【问题讨论】:
标签: c type-conversion converter
我需要这样做(不是圆形、地板或天花板):
示例:
1.58700023(16 位)
预计 1.58700000
我正在执行此操作: (value-32768.0)/32768 转换为 (byte value to real value in float) int 他的转换有这个错误 = X.00000023 或其他
【问题讨论】:
标签: c type-conversion converter
你很可能不能用浮点数做到这一点;请注意,并非所有值都可以完全表示为 float:毕竟它限制为 32(通常)位。
对于打印,你应该可以使用:
printf("%.3f", 1.58700023);
这将在值转换为字符串时通过舍入打印1.587。
【讨论】:
我假设您想使用基元实现舍入。
要四舍五入到四位小数,乘以 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 的一半以执行舍入到最接近的下一个数字等。
【讨论】: