【发布时间】:2016-08-09 21:55:16
【问题描述】:
根据this link,C 中的 FLOAT 数据类型范围为 1.2E-38 到 3.4E+38,精度为 6 位小数。
但是,在我看来,值 1.2E-38 需要超过 6 个小数位的精度才能表示。
我的推理有什么问题?
【问题讨论】:
-
你有没有想过“floating-point”中的“floating”是什么意思?这意味着您可以用小数点后 6 位表示 1.2e-38。这就是说,不要试图用十进制来考虑二进制浮点。
-
1.2 是两位小数。指数与它无关。 See this link。 This link may also be useful.
-
当您输入此内容时,您仅用了多少位来表示 1.2E-38?
-
0.000000000000000000012 有 21 位小数,2 位小数精度。
-
别再想十进制了,它是二进制格式而不是十进制格式。想想有多少位尾数而不是十进制数字。
标签: c types floating-point precision