浮点数比较之我见

原创 2011年01月21日 19:31:00

关于浮点数的特殊性,这个就不用我多说什么 了,我在这儿想跟大家讨论的是关于"=="这个比较运算符。

 

先上一段经常被大家提及的浮点数比较函数(C代码):

 

代码功能其实就是考虑能接受的两个浮点数的误差范围。很明显+0.0 == -0.0

 

再上一段java.lang.Float类中的浮点比较函数:


这段代码与以上代码有个很明显的区别,那就是+0.0 > -0.0。

 

基于上面的现象,我就在想,为什么java在比较之前不首先采用运算符"=="呢?事实在,在java里,直接采用连等运算符返回的是true。

 

如何合理解释这个奇怪的实现,我自己想到一种解释:

采用运算符"=="得到的结果可看做算术(algorithm)实现。在算术上,+0.0就应该与-0.0表示的是同一个数。而作为单纯的浮点数来比较,-0.0与+0.0在二进制表示上并不一样。

 

针对以上问题,如果大家还有其它合理解释,欢迎提出,谢谢!

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

浮点数比较

在数学运算当中经常会涉及到判断两个数是否相等的情况 对于整数很好处理 A==B这样的一个语句就可以解决全部的问题 但是对于浮点数是不同的 首先,浮点数在计算机当中的二进制表达方式就决定了大多...

浮点数的比较(2)

1. 正数的情况       根据IEEE的内存结构, 指数在高位,尾数在低位,浮点数大的对应的把其内存结构按照整数来理解进行比较的时候,情况也是成立的,因此在这里如果把他们进行比较的话,作为整数运...

浮点数的比较

浮点数比较问题

永远不要比较两个浮点数是否相等

PHP手册里有一句话:永远不要比较两个浮点数是否相等。 以前没太在意,最近在项目中因为这个问题掉坑里了,所以留文铭记。 计算机内部处理浮点数的方式决定了浮点数不可能100%的精确,所以在处理浮点数...

01 JAVA 基础补充 浮点数的比较

这篇文章主要记录一些关于精度问题的小知识,当然也不知道对不对,先记录一下~啦啦啦~我是勤劳的屌丝程序猿 少年。。 顺便复习:原码,反码,补码对于正数来说,都是一样的,对于负数,反码除符号位之外都取...

浮点数的相等比较

今天群里边一哥们儿——哦,确切地说,应该是一姊妹——问到了Python中怎样判断一个浮点数的小数部分是不是0,本意是要找和C语言中的fmod函数相同功能的函数的,在Python中在math模块中有这个...

PAT 1012. The Best Rank (25)(成绩排名与浮点数比较)

题目1012. The Best Rank (25)时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y...

浮点数的比较(转)

首先,这个不算原创,原文是洋文的,我翻译了一下 写这个文章的人绝对是个大师,虽然知识并不是很深奥,不过想法真的很不错,值得学习 两个月前忽然看见的这篇文章,昨天仔细读了一遍,翻译了一下...

浮点数比较

浮点数比较注意事项
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)