toFixed()*100保留的小数位数和预想的不一致

2023-05-16

目录

一、问题

 二、原因及解决方法

三、总结


一、问题

1.因为演示需要,要造一些假数据,一些数据要求保留2位小数。这需求真的不难,不就是parseFloat().toFixed()不就完了

2.所以很快就写了如下代码:

let a=Math.random()*(12-1)+1;
let b=12;
let random1=parseFloat(a/b).toFixed(4)*100;
let random2=parseFloat(a/b*100).toFixed(2);
let random3=(parseFloat(a/b)*100).toFixed(2);
console.log("random",random1,random2,random3);

3.问题:random1竟然有时候有很多位小数,还是偶现的,就离谱,如图1-1所示。

如图 1-1

 二、原因及解决方法

1.不应该呀,怎么会这么离谱呢?

   先保留4位小数,然后再扩大100倍,不就是小数点右移2位吗?怎么有时候位数竟然 远远大于2呢??????

2.直接进行运算发现,有时候也会有这种问题,如图2-1所示

图2-1

 3.突然意识到应该是 和计算机的计算的精度有关系。计算机中采用二进制进行计算(计算机能够保留、存储和计算的位数是有限制的,现在一般都是64位,对于一些无限小数,计算机无法准确的表示),所以和十进制的计算结果存在差异,最终导致了在十进制中正确的东西,用二进制计算时有问题的情况。

4.解决方法:对最终的计算结果使用 .toFixed(),就能确保保留的小数位数是准确的。toFixed就是用来专门处理float数据保留的小数位数的。

三、总结

1.之前一直听老师在讲台说:浮点溢出。只是知道有这么回事,但是没有举例,也没有实际遇到过,现在算是 温故而知新了。

2.计算机中的运算要确保运算结果和预期一致,使用的方法一定要精准。最好不要把十进制的逻辑代入到代码中,因为二进制计算和十进制计算在精度方面是有区别的。

/*

希望对你有帮助!

如有错误,欢迎指正,非常感谢!

*/ 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

toFixed()*100保留的小数位数和预想的不一致 的相关文章

  • Blazor入门100天 : 身份验证和授权 (3) - DB改Sqlite

    目录 建立默认带身份验证 Blazor 程序角色 组件 特性 过程逻辑DB 改 Sqlite将自定义字段添加到用户表脚手架拉取IDS文件 本地化资源freesql 生成实体类 freesql 管理ids数据表初始化 Roles freesq
  • 20万到100万年薪的算法工程师有什么区别?

    公元七世纪 xff0c 在车迟国国家气象局组织的一次求雨活动中 xff0c 虎力 鹿力 羊力三位大仙成功地祈下甘霖 xff0c 救黎民于水火中 老国王虽然不明就里 xff0c 却从此尊他们为国师 xff0c 奉道教为圭臬 本世纪 xff0c
  • python 求1+2+3+4+5......+100的和

    法一 xff1a x 61 0 给x赋值为0 y 61 0 给y赋值为0 while True while真 xff0c 循环开始 if 0 61 61 x 2 如果x和2的余数等于0 xff0c 那么x就为偶数 xff0c y的赋值就等于
  • 比 MyBatis 快了 100 倍

    比 MyBatis 效率快 100 倍的条件检索引擎 xff0c 天生支持联表 xff0c 使一行代码实现复杂列表检索成为可能 xff01 2开源协议 使用Apache 2 0开源协议 3界面展示 你的产品给你画了以上一张图 xff0c 还
  • 不到100行写出一个完整的web框架

    本篇文章是为了后面的Django做准备的 xff0c 这是学习web框架的底层知识 xff0c 没有直接用到socket xff0c 而是用Python自带的库wsgiref 1 wsgiref模块 它就相当于是一个服务器 xff0c 会帮
  • 打印1-100之间所有素数

    代码 方法1 方法2 执行结果 求1 10之间非素数之和
  • 求100以内的偶数和

    一 文字描述 1 定义两个整型变量sum xff0c i xff1b 2 把0赋值给sum xff0c 2赋值给i xff1b 3 使sum 61 sum 43 i xff1b 4 如果i xff1c 61 100 xff0c 则返回第3步
  • 靠写作能挣100万吗

    不要被标题吓到 xff0c 今天说的就是关于写作 Fenng大说 xff0c 同等能力的人绝对要文字写得好的 帅张说编程 英语 写作是程序员的3大底层能力 写作能给我带来什么 xff1f 王朔曾说 xff0c 写作是一条狗 xff0c 只要
  • 编写Python语言,使用循环求解1到100之间数的偶数和

    a 61 1 sum 61 0 while a lt 61 100 if a 2 61 61 0 sum 43 61 a a 43 61 1 print 39 1和100之间的偶数的和为 39 sum
  • 100+套Axure数据可视化大屏展示原型模板及通用主键库

    内置多种实用美观的可视化组件库及行业模板库 xff0c 行业模板涵盖 xff1a 金融 教育 医疗 政府 交通 制造等多个行业 xff0c 提供设计参考 随着大数据的发展 xff0c 可视化大屏在各行各业得到越来越广泛的应用 可视化大屏不再
  • c语言中num =10,num/100%10 这是什么意思求详细的计算逻辑

    include int main 定义三位数num 个位数sd 十位数td 百位数hd int num sd td hd 循环所有三位数 for num 61 153 num 61 153 获取三位数字num百位上的数字 hd 61 num
  • 1到100的二进制表示

    1 61 1 2 61 10 3 61 11 4 61 100 5 61 101 6 61 110 7 61 111 8 61 1000 9 61 1001 10 61 1010 11 61 1011 12 61 1100 13 61 11
  • 最新的100个微信小程序-极乐Store

    1 团队日历 通过日历管理团队协同任务 在团队内指派 抄送和公开任务事项 xff0c 通过邮件或短信推送消息 到极乐小程序商店中搜索 团队日历 使用 2 同程旅游 同程小程序是一款无需下载安装 xff0c 只需扫描二维码即可 实现产品订购和
  • 【杭电100题】2073 无限的路

    题目链接 xff1a http acm hdu edu cn showproblem php pid 61 2073 xff08 c语言的double类型printf lf 显示0 00000问题 xff09 xff1a https blo
  • 【杭电100题】2094 产生冠军

    原题 xff1a http acm hdu edu cn showproblem php pid 61 2094 最近很喜欢用map 把成功者 失败者都存起来 然后在成功者里把曾经失败的划掉 最后成功者里如果只剩一个人 xff0c 冠军产生
  • C++面试100题,1——40

    C与c 43 43 有什么不同 xff1f 在c 43 43 中能使用引用就不要使用指针 xff0c 要改变一个一级指针就要用一个二级指针 要改变一个二级指针就要用一个三级指针 xff0c 会变得越来越复杂 A类中的func1是虚函数 xf
  • C语言实现1/1-1/2+1/3-...-1/100求和

    观察题目要求可以看出 xff0c 底数为奇数是前面符号为正 xff0c 偶数是则为负 那么我们可以考虑使用一下方式完成求解 解法一 xff1a span class token macro property span class token
  • C++ 求100的阶乘

    include lt iostream gt using namespace std int main int n int k 61 1 k为当前的位数 int fact 10000 61 1 0 cout lt lt 34 输入阶乘n 3
  • leetcode 100热题

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言标题easy问题合集1 有效括号问题 前言 提示 xff1a leetcode简单题目100题中的easy部分 xff1a
  • javascript - 如何防止 toFixed 对小数进行四舍五入

    我对 html javascript 和 css 很陌生 所以如果我的问题对你来说听起来很愚蠢 请原谅 我的问题是如何阻止该功能toFixed 来自小数的四舍五入 这是我的链接 http jsfiddle net RWBaA 4 http

随机推荐