floating-point - 可以用浮点数表示的最小/最大数字
问题描述
如何计算可以用二进制 16、32、64 IEEE 754 浮点数表示的最小/最大十进制数?
解决方案
正常范围是:
- 16 位(半精度):±6.10e-5 至 ±65504.0
- 32 位(单精度):±1.18e−38 至 ±3.4e38
- 64 位(双精度):±2.23e−308 至 ±1.80e308
如果您也允许 DENORMALS,则最小值为:
- 16 位:±5.96e-8
- 32 位:±1e-45
- 64 位:±5e-324
永远记住,仅仅因为一个数字在这个范围内并不意味着它可以被精确地表示。在任何范围内,由于基数原因,浮点数必然会跳过值。经典的例子是1/3
它在任何有限精度下都没有精确的表示。一般来说,您只能精确地表示那些被称为“二元”的数字,即对于某些 A 和 B 的形式为 A/2^B 的数字;只要结果落入动态范围内。
推荐阅读
- javascript - React 上下文状态共享在兄弟组件中不起作用
- javascript - 我可以将webdriver v4测试方法链重写为v5(当前spectron / electron测试)
- javascript - 如果超过 60 分钟,如何让计数器从小时开始?
- php - 为什么 debug_backtrace() 似乎跳过了几个重要的“步骤”,使我无法调试致命错误的来源?
- python-3.x - 选择要通过动态列名更改的列值
- unity3d - 为什么我不能直接使用“Resources.Load”结果?
- sql - 如何根据不共享字段的表过滤查询?
- r - 图像未使用 Shiny renderImage 在 Canvas 内渲染
- rust - 在编译时没有已知的大小
- javascript - 继承修改子类属性的类被覆盖