CNode

js中,为什么 0.01+0.05≠0.06?

问答
Cchinahsj发布于8 年前最后回复8 年前20 回复6411 浏览0 收藏

在项目中偶然发现,0.01+0.05并不等于0.06!很震惊,求大佬解释下!! [2U659D]838XG7U3883CIW7E.png](//static.cnodejs.org/FtQBiaYYPhjPvrULGVlxmw7vmHor)

查看回复

回复 (20)

2
243011068#1·8 年前

说的其他语言就相等似得

J
justjavac#2·8 年前

说的其他语言就相等似得

D
dbit-xia#4·8 年前
引用 243011068说的其他语言就相等似得

@243011068 @justjavac 看PowerScript image.png

Z
zuohuadong#5·8 年前

去看下浮点数的原理~~ 是有精度损失的。 你可以用 number.js 解决

C
chinahsj#6·8 年前

@justjavac 非常感谢!

C
chinahsj#7·8 年前

@zuohuadong 好的,我去了解下

W
waitingsong#8·8 年前

程序员不知道浮点运算精度才是令人震惊的

A
AnzerWall#9·8 年前

@dbit-xia

#include<cstdio>
//
int main() {
    float a = 0.01;
    float b = 0.05;
    printf("%d\n", (a + b) == 0.06 ? 1 : 0);
}

image.png

Z
zhulinwei#10·8 年前

IEEE754标准了解一下 自豪地采用 CNodeJS ionic

D
dengnan123#11·8 年前

0.1+0.2 了解下

A
AnzerWall#12·8 年前

@CodeofGame

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);
    }
}

image.png

C
CodeofGame#13·8 年前

@AnzerWall image.png 打脸了,java和.net原来都有这个问题,又长姿势了!!!

C
chinahsj#14·8 年前

nodejs 的伙伴们,推荐给你们decimal.js api:http://mikemcl.github.io/decimal.js/ github:https://github.com/MikeMcl/decimal.js

D
dingyuanwu#15·8 年前

这是程序员基本功吧

D
DevinXian#16·8 年前

归根到底是2进制的问题

R
remembergf#17·8 年前

因为js中浮点数的精度是小数点后17位,有精度的损失

R
remembergf#19·8 年前
引用 waitingsong@remembergf 逻辑错了

@waitingsong 什么逻辑错了啊,这个不就是关于浮点数值计算时会产生摄入误差的问题吗?我想错了吗

J
jiurihuahuo#20·8 年前

浮点数在计算机中的存储

参与回复
登录后即可参与回复。登录