在浮点数的右边加零
Add zeros in the right hand of a float number
我需要这样做(不四舍五入、floor 或 ceil):
示例:
1.58700023(16 位)
预计 1.58700000
我正在执行此操作:(value-32768.0)/32768 转换为(字节值到浮点数中的实际值)int 他的转换有此错误 = X.00000023 或其他
很可能你不能用浮点数来做到这一点;请注意,并非所有值都可以精确表示为 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 的二分之一以执行四舍五入到最接近的下一位等。
我需要这样做(不四舍五入、floor 或 ceil):
示例:
1.58700023(16 位)
预计 1.58700000
我正在执行此操作:(value-32768.0)/32768 转换为(字节值到浮点数中的实际值)int 他的转换有此错误 = X.00000023 或其他
很可能你不能用浮点数来做到这一点;请注意,并非所有值都可以精确表示为 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 的二分之一以执行四舍五入到最接近的下一位等。