【转】javascript 浮点数运算问题
2024-08-25 14:51:19
大多数语言在处理浮点数的时候都会遇到精度问题,但是在JS里似乎特别严重,来看一个例子
alert(45.6*13);
结果居然是592.800000000001,当然加法之类的也会有这个问题
那这是js的错误吗?
当然不是,你的电脑做着正确的二进制浮点运算,但问题是你输入的是十进制的数,电脑以二进制运算,这两者并不是总是转化那么好的,有时候会得到正确的结果,但有时候就不那么幸运了
alert(0.7+0.1);//输出0.7999999999999999
alert(0.6+0.2);//输出0.8
你输入两个十进制数,转化为二进制运算过后再转化回来,在转化过程中自然会有损失了
但一般的损失往往在乘除运算中比较多,而JS在简单的加减法里也会出现这类问题,你也看到了,这个误差也是非常小的,但是却是不该出现的
那该怎么解决呢,ECMA4似乎给了解决方法,但是现在倒不是那么实用的
一种方法,比如0.7+0.1,先把0.1和0.7都乘10,加完之后再除10
另外可以自己写点函数来解决这个问题,自己百度谷歌一下应该有很多,但是最好还是不要用JS做一些复杂的浮点运算,毕竟JS更多的作用不在于此
最新文章
- React在开发中的常用结构以及功能详解
- [ MySql学习心得 ] --One
- Round in Oracle/VBA
- Android系统中的6种模式
- HTML5 Canvas绘文本动画(使用CSS自定义字体)
- NIOS II开发备忘录
- 衔接UI线程和管理后台工作线程的类(多线程、异步调用)
- 也谈LBP
- URAL 1136 Parliament 二叉树水题 BST后序遍历建树
- Jfinal 入门
- JavaScript权威指南学习笔记4
- jQuery Mobile 入门基础教程
- Windows环境下JDK的下载与安装
- 用session做权限控制
- AutoCAD中的扩展字典及扩展记录(C#)
- python的错误处理
- krpano 常用标签
- ActiveMQ(为什么要使用消息中间件,JMS传输模型)
- uni-app — 一套前端开发跨平台应用的终极解决方案
- sql函数创建