在项目中偶然发现,0.01+0.05并不等于0.06!很震惊,求大佬解释下!! [2U659D]838XG7U3883CIW7E.png](//static.cnodejs.org/FtQBiaYYPhjPvrULGVlxmw7vmHor)
说的其他语言就相等似得
说的其他语言就相等似得
@243011068 @justjavac 看PowerScript
去看下浮点数的原理~~ 是有精度损失的。 你可以用 number.js 解决
@justjavac 非常感谢!
@zuohuadong 好的,我去了解下
程序员不知道浮点运算精度才是令人震惊的
#include<cstdio>
//
int main() {
float a = 0.01;
float b = 0.05;
printf("%d\n", (a + b) == 0.06 ? 1 : 0);
}
IEEE754标准了解一下 自豪地采用 CNodeJS ionic
0.1+0.2 了解下
package com.company;
public class Main {
public static void main(String[] args) {
// write your code here
double a = 0.01;
double b = 0.05;
System.out.printf("%d\n", (a + b) == 0.06 ? 1 : 0);
}
}
@AnzerWall 打脸了,java和.net原来都有这个问题,又长姿势了!!!
nodejs 的伙伴们,推荐给你们decimal.js api:http://mikemcl.github.io/decimal.js/ github:https://github.com/MikeMcl/decimal.js
这是程序员基本功吧
归根到底是2进制的问题
因为js中浮点数的精度是小数点后17位,有精度的损失
@remembergf 逻辑错了
@waitingsong 什么逻辑错了啊,这个不就是关于浮点数值计算时会产生摄入误差的问题吗?我想错了吗
浮点数在计算机中的存储