在浮点数的右边加零

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 的二分之一以执行四舍五入到最接近的下一位等。