【问题标题】:Add zeros in the right hand of a float number在浮点数的右侧添加零
【发布时间】: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】:

你很可能不能用浮点数做到这一点;请注意,并非所有值都可以完全表示为 float:毕竟它限制为 32(通常)位。

对于打印,你应该可以使用:

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

这将在值转换为字符串时通过舍入打印1.587

【讨论】:

  • 指出如何修复比较也是一个好主意(就像您提出的打印修复一样。因为我想这一定是个问题。
  • 不适合我:结果 1.58700023 1.58799997 编辑:我正在使用浮点数
【解决方案2】:

我假设您想使用基元实现舍入。

要四舍五入到四位小数,乘以 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 的一半以执行舍入到最接近的下一个数字等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    相关资源
    最近更新 更多