js中toFixed方法的两个坑

  • toFixed返回结果是string,后续使用它计算会错误
  • toFixed返回结果可能出现负零-0.00

toFixed返回结果是string,后续使用它计算会错误

代码演示:
类型判断代码示例:

var stringNum = (100.101).toFixed(2);
var type = typeof stringNum == "string";
console.log(type);  //type为true

后续使用代码示例:
1)加法测试

var addResult = parseFloat(100.001).toFixed(2) + (parseFloat(100.001).toFixed(2));
console.log(addResult); //addResult为100.00100.00

加法结果:为字符串拼接。出现了计算错误。

2)减法测试

var subResult = parseFloat(100.001).toFixed(2) - (parseFloat(100.001).toFixed(2));
console.log(subResult); //subResult为0

减法结果:为正常计算,示例结果未出现问题。是否可能丢失精度有待考证。

2)乘法测试

var multiResult = (parseFloat(100.015).toFixed(2)) * (parseFloat(100.001).toFixed(2));
console.log(addResult); //multiResult为10002

乘法结果:为正常计算,示例结果未出现问题。是否可能丢失精度有待考证。

3)除法测试

var diviResult = (parseFloat(100.015).toFixed(2)) / (parseFloat(100.001).toFixed(2));
console.log(multiResult); //diviResult为1.0002

除法结果:为正常计算,示例结果未出现问题。是否可能丢失精度有待考证。

结论:
故toFixed返回结果是string,若直接用两个string进行加法会出现错误。

toFixed返回结果可能出现负零-0.00

toFixed函数只处理数字位,不处理符号位,有可能会出现-0.0的情况。
例如:
a)问题示例如图

b)问题代码示例如下

var result = parseFloat((parseFloat(总收入数值1) - parseFloat(直营数值2) - parseFloat(战略合作商数值3)  - parseFloat(战略合作商数值4)).toFixed(2));
//result为-0.0

js中toFixed方法的两个坑相关推荐

  1. JS中toFixed()方法的问题及解决方案

    JS中toFixed()方法的问题及解决方案 参考文章: (1)JS中toFixed()方法的问题及解决方案 (2)https://www.cnblogs.com/gushen/archive/201 ...

  2. JS的toFixed方法

    toFixed() 方法可把 Number 四舍五入为指定小数位数的数字.通俗点就是传入的参数是几,那么我们的小数就保留几位. eg: alert(0.056.toFixed(2));–>0.0 ...

  3. created写法_vue.js中created方法作用

    这是它的一个生命周期钩子函数,就是一个vue实例被生成后调用这个函数.一个vue实例被生成后还要绑定到某个html元素上,之后还要进行编译,然后再插入到document中.每一个阶段都会有一个钩子函数 ...

  4. 【转载】JS中bind方法与函数柯里化

    原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...

  5. vue在created调用点击方法_vue.js中created方法的使用详解

    这次给大家带来vue.js中created方法的使用详解,使用vue.js中created方法的注意事项有哪些,下面就是实战案例,一起来看一下. 这是它的一个生命周期钩子函数,就是一个vue实例被生成 ...

  6. Js中fetch方法

    Js中fetch方法 fetch()方法定义在Window对象以及WorkerGlobalScope对象上,用于发起获取资源的请求,其返回一个Promise对象,这个Promise对象会在请求响应后被 ...

  7. 前端开发:JS中join()方法的使用总结

    前言 在前端开发过程中,对数组的数据进行处理也是比较常见的操作之一,而且对数组进行操作的频率远远大于对 对象进行操作,因此在开发过程中对于数组里面的数据进行处理是一项比较重要的技能,尤其是对于刚入行的 ...

  8. js中eval方法的使用

    2.js中eval方法的使用 eval可以执行传入的字符串,比如:eval("console.log('eval test!')"),控制台直接会输出"eval test ...

  9. JS中sort方法排序

    JS中sort方法排序 一.数字排序(string类型) 二.数字排序(string类型和number类型) 三.混合排序(string.number和字母) 四.函数排序 五.数组对象排序 一.数字 ...

最新文章

  1. 这位院士,获一次性奖励2500万!
  2. ajax无刷新方式对form表单进行赋值!
  3. 警方办案滥用谷歌地理围栏,小伙三次骑车路过案发点被视作嫌犯
  4. 安卓APP_ 控件(8)—— AlertDialog
  5. 前端学习(2130):编译作用域的概念
  6. 关于2017届学长制作分享软件share(失物招领)的使用体验和需改进的内容
  7. Install Python3.6 on Amazon Linux/EC2 在Amazon Linux实例中安装使用Python3.6
  8. 《论文笔记》Adaptive decentralised_cooperative_vision_based_simultaneous_localization_and_mapping_for_mult
  9. LeetCode 350. Intersection of Two Arrays II
  10. 利用IDLE对 dem进行批量拼接处理
  11. python获取浏览器network_Selenium爬虫-获取浏览器Network请求和响应
  12. 暴躁的一天从Ubuntu搜狗拼音开始
  13. 分块上(下)三角矩阵的行列式
  14. 英语新闻听力之专有名词
  15. 【数据治理-01】开篇:一起聊聊数据治理
  16. 【NIPS2018】实时联合目标检测与语义分割网络
  17. 【keras学习(三)】mnist手写图片分类程序(一)
  18. scp:Mac使用方法(文件上传与下载服务器)
  19. Python_封装案例(小明爱跑步)
  20. Scrapy(二)翻页功能

热门文章

  1. Flask+uwsgi+Nginx环境搭建
  2. MAVEN 私有仓库库迁移
  3. PHP源码安装及配置——以fastCGI的方式与httpd整合
  4. ASP.NET 2.0中实现模板中的数据绑定
  5. java hashmap 的api_JAVA基础--JAVA API集合框架(ArrayList、HashSet、HashMap使用)
  6. python3.12答案_编程常见问题
  7. php获取蓝凑云文件列表,php调用蓝奏云下载接口
  8. h5文字垂直居中_CSS中垂直居中和水平垂直居中的方法
  9. 数据库数据规范化看不懂_数据库管理系统中的规范化
  10. c# 命名空间命名规范_C#命名空间能力问题和解答 套装3