小结一下:javascript 金额计算

今天在项目中开发一个计算金额的功能,开始我是这样做的:

eg:

var amount += parseFloat( 0.01+0.02);

结果:0.0300000000000000001

为什么呢?

搜了一下parseFloat主题:

1.  parseFloat() 函数 ---》 解析字符串 ---》 返回浮点数。

在解析过程中遇到了

  正负号(+ 或 -)、

  数字 (0-9)、

  小数点、

  科学记数法中的指数(e 或 E)

  以外的字符

  则它会忽略该字符以及之后的所有字符。同时参数字符串首位的空白符会被忽略。

  第一个字符不能被解析成为数字---》返回 NaN。

恩。。。。。感觉还是理解不深,为什么会是那么一长串,精度问题,看看原理怎样。。。。

但是。。。。。没有找到根本的清晰的解释

那就暂时看看解决方案吧:

(1)

  toFixed(n)    但是这个方法对 js版本要求较高 不能兼容ie5

(2)

  var price = 5.02
  var quantity = 4
  var amount= Math.round(parseFloat(price*100 * quantity))/100;

  Math.ceil() 是向上取整
  Math.floor()是向下取整
  Math.round()是四舍五入

欢迎提供方案,解答疑惑呀。。。。。。。

原文地址:https://www.cnblogs.com/youlanlan/p/4354393.html