一种JavaScript里小数的精确计算方式

简介: 一种JavaScript里小数的精确计算方式
<html>
<script type="text/javascript">
/*
  题目描述
求 a 和 b 相乘的值,a 和 b 可能是小数,需要注意结果的精度问题 
输入例子:
multiply(3, 0.0001)
输出例子:
0.0003
String.prototype.substring()(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/substring)
Number.prototype.toFixed()(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed)
// 推荐写法
*/
function multiply(a, b) {
    a = a.toString();
    b = b.toString();
    var aLen = a.substring(a.indexOf('.') + 1).length;
    var bLen = b.substring(b.indexOf('.') + 1).length; 
    return (a * b).toFixed(Math.max(aLen, bLen));
    /* 本题未说明保留小数位数, 这里假定得出的结果不含多余的0, 即0.0003000...需转成0.0003 */
}
console.log( "Solution:" + multiply( 3, 0.0001 ));
console.log( 3 * 0.0001 );
console.log( "Solution: " + multiply( 3.0001, 0.0002 ));
console.log( 3.0001 * 0.0002 );
</script>
</html>
相关文章
|
1月前
|
JavaScript 算法
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
|
1月前
|
JavaScript 前端开发 大数据
数字太大了,计算加法、减法会报错,结果不正确?怎么办?用JavaScript实现大数据(超过20位的数字)相加减运算。
数字太大了,计算加法、减法会报错,结果不正确?怎么办?用JavaScript实现大数据(超过20位的数字)相加减运算。
|
4月前
|
JavaScript
|
4月前
|
存储 移动开发 JavaScript
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(1)
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(1)
51 0
|
4月前
|
JavaScript
js计算时间为刚刚、几分钟前、几小时前、几天前··
js计算时间为刚刚、几分钟前、几小时前、几天前··
|
7月前
|
JavaScript 前端开发
Javascript之计算众数和中位数
Javascript之计算众数和中位数
|
15天前
|
Rust JavaScript 安全
🚀JS使用Wasm为你的文件MD5计算装上火箭引擎🚀
🚀JS使用Wasm为你的文件MD5计算装上火箭引擎🚀
N..
|
2月前
|
缓存 JavaScript 前端开发
Vue.js的计算属性
Vue.js的计算属性
N..
14 2
|
3月前
|
JavaScript 前端开发
JavaScript 计算时间差并格式化输出
JavaScript 计算时间差并格式化输出
20 0
|
8月前
|
JavaScript 前端开发 Java
JavaScript的数学计算库:decimal.js
JavaScript的数学计算库:decimal.js
148 0