【问题标题】:How is the amount of decimal places in a float and a double calculated?如何计算 float 和 double 中的小数位数?
【发布时间】:2019-11-15 19:15:18
【问题描述】:

我是编程新手,在大学里我们学习了不同类型的数字(整数、短整数、浮点数、双精度数)。 Float 和 double 是浮点数。通常,它们由符号 +/-、尾数和指数组成。每个部分占用一定数量的位。 浮点数最多可显示 7 位小数,最多可显示 16 位。 公式是:

23·log10(2)=23·(log(2)/log(10))≈23·0.3≈7(浮点数的小数位)

52·0.3≈16(double 的小数位)

我知道 23 和 52 是尾数的位。但是对数从何而来?这如何计算小数位数?

【问题讨论】:

  • 您必须对二进制格式的十进制解释有点小心。例如,0.0099999940.009999993 都有 7 个有效十进制数字,但 IEEE 754 binary32 浮点数的分辨率不足以区分它们:在通常的最近舍入下,两者都将映射到相同的 binary32浮动。

标签: floating-point double


【解决方案1】:

23 位可以表示 223 个值。 N 个十进制数字可以表示 10N 个值。

计算可以表示与 23 位相同的一组值的小数位数的计算简化为求解等式中的 N:

223 = 10N

log(223) = log(10N)

23*log(2) = N*log(10)

N = 23*(log(2)/log(10))

当然,您不能有小数位或小数位,因此您必须根据使用结果的方式向上或向下舍入。

【讨论】:

    猜你喜欢
    • 2013-01-06
    • 2021-11-06
    • 1970-01-01
    • 2013-01-20
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多