字符串通过parseFloat函数转化 后相加出现意外數值

lufengsn 2012-12-13 05:05:32
alert(parseFloat("7.99") + parseFloat("10")); //17.990000000000002

why??
...全文
875 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
盼盼栗子 2015-05-08
  • 打赏
  • 举报
回复
引用 6 楼 lufengsn 的回复:
[quote=引用 5 楼 wd358851347 的回复:] 引用 4 楼 wd358851347 的回复:引用 2 楼 lufengsn 的回复:引用 1 楼 wd358851347 的回复:应该是浮点数运算的时候,先转化为二进制,用二进制来算,结果再转回十进制 那該怎麼解決了呢? parseFloat貌似只有一個參數。http://www.w3schools.com/jsref/jsref_parsefloat.asp ……
num.toFixed(2):2表示小数点后的数字位数,这里倒是可以解决。 那如果是:var num = parseFloat("7.9999") + parseFloat("10") 因為parseFloat函數里面的数值是客服输入的,num.toFixed(2)的話数值就截断了。[/quote] toFixed(2)是取小数点后两位。。。我也遇到这种问题。他会显示018.00,前面多一个0,不知道是什么鬼!!!
lufengsn 2012-12-13
  • 打赏
  • 举报
回复
引用 5 楼 wd358851347 的回复:
引用 4 楼 wd358851347 的回复:引用 2 楼 lufengsn 的回复:引用 1 楼 wd358851347 的回复:应该是浮点数运算的时候,先转化为二进制,用二进制来算,结果再转回十进制 那該怎麼解決了呢? parseFloat貌似只有一個參數。http://www.w3schools.com/jsref/jsref_parsefloat.asp ……
num.toFixed(2):2表示小数点后的数字位数,这里倒是可以解决。 那如果是:var num = parseFloat("7.9999") + parseFloat("10") 因為parseFloat函數里面的数值是客服输入的,num.toFixed(2)的話数值就截断了。
wd358851347 2012-12-13
  • 打赏
  • 举报
回复
引用 4 楼 wd358851347 的回复:
引用 2 楼 lufengsn 的回复:引用 1 楼 wd358851347 的回复:应该是浮点数运算的时候,先转化为二进制,用二进制来算,结果再转回十进制 那該怎麼解決了呢? parseFloat貌似只有一個參數。http://www.w3schools.com/jsref/jsref_parsefloat.asp 用toFixed(2) 保留两位小数 ……
var num = parseFloat("7.99") + parseFloat("10") alert(num.toFixed(2))
wd358851347 2012-12-13
  • 打赏
  • 举报
回复
引用 2 楼 lufengsn 的回复:
引用 1 楼 wd358851347 的回复:应该是浮点数运算的时候,先转化为二进制,用二进制来算,结果再转回十进制 那該怎麼解決了呢? parseFloat貌似只有一個參數。http://www.w3schools.com/jsref/jsref_parsefloat.asp
用toFixed(2) 保留两位小数
jeff_jiang 2012-12-13
  • 打赏
  • 举报
回复
试了一下。改用7.98或者7.999都正常。。就是*.99会出现。。 大神快出来解释- -
lufengsn 2012-12-13
  • 打赏
  • 举报
回复
引用 1 楼 wd358851347 的回复:
应该是浮点数运算的时候,先转化为二进制,用二进制来算,结果再转回十进制
那該怎麼解決了呢? parseFloat貌似只有一個參數。http://www.w3schools.com/jsref/jsref_parsefloat.asp
wd358851347 2012-12-13
  • 打赏
  • 举报
回复
应该是浮点数运算的时候,先转化为二进制,用二进制来算,结果再转回十进制
目的: 掌握什么是 JavaScript 如何将 JavaScript 嵌入到 HTML 中 网页中嵌入脚本有两种方式:使用