小结一下: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()是四舍五入

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

时间: 2024-10-01 12:19:22

小结一下:javascript 金额计算的相关文章

【JavaScript】计算字符串的长度

定义: functionGetChineseCount(str) { varchinieseCount=0; varbadChar="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; badChar+="abcdefghijklmnopqrstuvwxyz"; badChar+="0123456789"; badChar+=""+" ";//半角与全角空格 badChar+="`[emai

javascript浮点数计算的问题

在使用javascript进行浮点数计算的时候经常会出现各种怪异的问题, 比如7*0.4 js计算结果为:2.8000000000000003. 所以在使用js计算的时候就需要一些特殊处理,思路就是先把js中的数 值扩大到相应的倍数,去掉小数部分再进行计算. var SysRf = SysRf || {}; SysRf.strNum = {}; //浮点数加法运算 SysRf.strNum.add = function(arg1, arg2) { var r1,r2,m; try{r1=arg1

js中进行金额计算parseFloat

在js中进行以元为单位进行金额计算时 使用parseFloat会产生精度问题var price = 10.99;var quantity = 7;var needPay = parseFloat(price * quantity); needPay的正确结果应该是76.93元  但是运行后发现needPay为76.93000000000001 此情况可通过 toFixed(n)  方法修正 但是这个方法对 js版本要求较高 不能兼容ie5 另一个解决方案是: 将元为单位的金额乘以100换算为分进

JavaScript基础 计算现在时间 距离 过去一时间 相差多少天

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

JavaScript基础 计算现在时间 距离 未来一时间 相差多少天

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

Javascript 时间计算函数

Javascript 时间计算函数 <span style="font-size:18px;"> <span style="font-size:18px;">function addZore(x) {if (x < 10) {x = "0" + x;};return x;}//2002-12-18格式 function getCurentDate() { var date = new Date(); var mont

浮点数在金额计算中的使用总结

浮点数在金额计算中的使用总结(摘自~~) double 和 float 类型的变量不适合用作金额计算是java语言使用中的基本知识,但在实际应用中此基本常识经常被程序员忽视,想当然的用在了实际的金额计算场景中,造成难以察觉的错误.在此对金额计算的使用方法做个总结,以规范后续使用. 1. double和float 的不准确 <effective Java>中指出,float和double类型主要是为科学计算和工程计算而设计的,不应该被用于需要精确结果的场合,尤其不适合于货币计算,见如下代码: p

JAVA中高精度金额计算

一般java代码中遇到高精度金额计算,日常使用bigDecimal类型. 在使用BigDecimal类来进行计算的时候,主要分为以下步骤: 1.用float或者double变量构建BigDecimal对象. 2.通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算. 3.把BigDecimal对象转换成float,double,int等类型. 一般来说,可以使用BigDecimal的构造方法或者静态方法的valueOf()方法把基本类型的变量构建成BigDecimal对象. 1

vue2购物车ch3-(过滤器使用 单件商品金额计算 全选全不选 总金额计算 删除商品功能)

1 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!-- Always force latest IE rendering engine or request Chrome Frame --> <meta content="IE=edge,chrome=1" http-equiv