美文网首页
小数加法

小数加法

作者: liyinkan | 来源:发表于2020-04-23 14:32 被阅读0次

众所周知的原因,0.1 + 0.2 = 0.30000000000000004

解决这个问题,最佳方法:使用库
可选择的很多

有小伙伴说在大多数场景可以 *100 再 /100 搞定
现实情况是:GG

console.log(18.9 * 100)
// 1889.9999999999998

10分钟造了个轮子,至少目前自己项目够用

let plus = (a, b) => {
    let findDecimal = (x) => {
        let arr = ('' + x).split('.')
        if (arr.length > 2) {
            throw 'not invliad number'
        }
        return arr.length == 1 ? 0 : arr[1].length
    }
    let toInteger = (x, d) => {
        return +(x.toFixed(d).replace('.', ''))
    }
    let aDecimal = findDecimal(a)
    let bDecimal = findDecimal(b)
    let dec = aDecimal > bDecimal ? aDecimal : bDecimal
    return (toInteger(a, dec) + toInteger(b, dec)) / Math.pow(10, dec)
}

原理上是字符串移动小数点操作。
没啥技术含量,够用就好。

看了眼 Java BigDecimal 的实现,实际上是把一个数字的表示变成了两部分

  • 整数部分 number
  • 小数部分 scale
    具体就懒得写了。

相关文章

  • 小数加法

    众所周知的原因,0.1 + 0.2 = 0.30000000000000004 解决这个问题,最佳方法:使用库可选...

  • 《存零用钱》教学反思

    这节课我把探讨小数加法的算法作为重点,让学生在理解并掌握小数加法的基础上独立解决小数减法的算法问题,理解小数点一定...

  • 小数值加法

    代码

  • 小学数学《把整数加法运算定律推广到小数》教学设计

    舒君荣 一、教学目标: ①认知目标:使学生初步理解整数加法运算定律对小数加法同样运用,...

  • 5《比身高》第一课时(进位加法和退位减法)

    学习目标: 1、结合具体情境,探索小数进位加、退位减的算法,能正确计算小数进位加法和退位减法,逐步养成严谨认真的学...

  • 2018-05-31

    《小数的加法和减法》教学反思 本节课的内容是在学生学习整数加减法基础上进行教学的。对于小数加减法...

  • 2018-05-31

    《小数的加法和减法》学反思 本节课的内容是在学生学习整数加减法基础...

  • php浮点数计算

    bcadd — 2个任意精度数字的加法计算 左操作数和右操作数求和 ,scale 用于设置结果中小数点后的小数位数...

  • 《买菜》课后反思

    《买菜》这节课级教学重点就是让学生掌握小数的加法和减法计算法则,是在小数的意义、性质、数位顺序表等知识的基础上进行...

  • 《寄书》教学反思

    这节课通过寄书这一活动让学生学习小数进位加法和退位减法以及培养学生的估算意识。在这之前,学生已学习过小数加减法(没...

网友评论

      本文标题:小数加法

      本文链接:https://www.haomeiwen.com/subject/hoqaihtx.html