计算机中的数值问题
来源:互联网 发布:java如何做界面设计 编辑:程序博客网 时间:2024/05/22 15:44
现代计算机几乎都服从IEEE浮点标准,当对数值算法编码时,IEEE浮点数表示具有很多重要特性。
IEEE浮点实数中有三个"特殊值":
1.无穷大(∞):比任何其他有效数都大的有效数。
2.负无穷大(-∞):比任何其他有效数都小的有效数。
3.无效数(NaN):这是一个无效数,由未定义运算得出的结果,例如0/0.
IEEE浮点标准的制定中做了一些 规定,对于任意实数a,下面的规则成立:
+a/(+∞) = +0
-a/(+∞) = -0
+a/(-∞) = -0
-a/(-∞) = +0
需要注意的是IEEE浮点标准将-0和+0区别开。在多数图形学程序中,这种区别不大,但是对于更经典的数值算法,必须牢记这一点。
其他涉及无穷大的运算,与期望的结果一样。对于正实数a,则有
∞+∞ = +∞
∞-∞ = NaN
∞*∞ = ∞
∞/∞ = NaN
∞/a = ∞
∞/0 = ∞
0/0 = NaN
涉及无穷大的布尔表达式规则如下,与期望的结果一样:
1.所有有效的有效数都小于+∞
2.所有有效的有效数都大于-∞
3.-∞小于+∞
包含无效数(NaN)的表达式规则很简单,具体如下:
1.任何包含NaN的算术表达式,结果是NaN
2.任何包含NaN的布尔表达式,结果是假
也许在IEEE浮点标准中最实用的是堆除数为0的情况的处理。对于任意正实数a,下面包含除数为0 的规则成立:
+a/+0 = +∞
-a/+0 = -∞
在IEEE浮点标准出现之前,如果遇到除0导致崩溃,我们就会很无奈的在代码中添加浮点数是否接近于0 的判断。有了IEEE浮点标准后,我们就
不需要进行特别的检查,这样就使得程序更加简单,稳健,高效
- 计算机中的数值问题
- 计算机中的数值数据表示
- Unity中的数值问题
- 计算机数值中的乘法除法原理
- 数值计算中的精度问题
- js中的数值精度问题
- 计算机中的编码问题
- 关于科学计算中的数值误差问题
- iTween中的大数值精度问题
- 选择排序算法中的交换数值问题
- grafana 网卡采集展示中的数值问题
- 计算机中的字节序问题
- 计算机数值方法
- 计算机中数值型数据二进制形式存储过程中的原码,反码与补码
- java基础-数值运算中的类型转换问题
- 高光谱图像预处理中的数值范围问题
- Javascript中的数值转换问题(基础知识必备)
- 关于Tostring转换格式过程中的数值格式问题
- Lucene创建索引,删除索引
- Lintcode102 Linked List Cycle solution 题解
- bash(4) 函数 function
- 问题 : 小希的数表
- Jenkins + Gradle + SonarQube 项目持续集成并分析环境搭建
- 计算机中的数值问题
- java中的泛型
- IntelliJ IDEA上创建Maven Spring MVC项目
- Java复用类
- php+nginx做下载服务器配置—X-Accel-Redirect
- 第一次安cygwin后安sipp源码
- win10中tomcat显示html乱码
- JavaScript中知而不全的this
- Python unittest单元测试框架