美文网首页
两个数相乘(包括整数和小数),精度问题

两个数相乘(包括整数和小数),精度问题

作者: 麦麦麦麦子 | 来源:发表于2017-07-17 16:47 被阅读0次
假设a和b相乘,a、b都有可能是小数,返回相乘的结果(注意精度问题)

举个栗子:a=4, b=0.0002——结果:0.0008

代码:

var a = 4;
var b = 0.0002;
// 首先把两个数转换成字符串(十进制)
var str1 = a.toString();
var str2 = b.toString();
// 分别取两个数的小数位数,以确定精度
var l1 = (str1.indexOf('.') == -1) ? 0 : (str1.length - str1.indexOf('.')  - 1);
var l2 = (str2.indexOf('.') == -1) ? 0 : (str2.length - str2.indexOf('.')  - 1);
var l = Math.max(l1,l2);
// 根据精度计算结果: 0.0008
var result = parseFloat(a*b).toFixed(l);
相关知识点

1.parseFloat() 函数可解析一个字符串,并返回一个浮点数;
2.toFixed() 方法可把 Number 四舍五入为指定小数位数的数字;
3.indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置:这里,如果这个数不是小数,则str.indexOf('.')返回-1,如果是小数,则返回小数点在字符串中第一次出现的位置;
4.获取小数位数:str1.length - str1.indexOf('.') - 1,小数的位数 = 字符串的长度 - 小数点第一次在字符串中出现的位置 - 1; 举个栗子:123.56(小数位数 = 6 - 3 - 1 = 2);

相关文章

  • 两个数相乘(包括整数和小数),精度问题

    假设a和b相乘,a、b都有可能是小数,返回相乘的结果(注意精度问题) 举个栗子:a=4, b=0.0002——结果...

  • Basic concepts(一)

    Float浮点数: 直接输入一个小数,或一个数除以一个整数,或两个数中有一个是小数,两者相乘、相加,结果都将是小数...

  • 1.2数字

    一、python数值类型基本知识 完整的python数值类型工具包括: 整数和浮点对象 复数对象 小数:固定精度对...

  • 高精度数(大整数)乘法

    大整数乘法 上一期(高精度加法)今天我们来研讨一下高精度乘法。 题目描述:将两个大整数(最多100位)相乘,输出结...

  • JS 数据精度以及数字格式化

    在做一些电商、财务业务的时候常常会遇见JS的数据精度问题以及数字格式化问题 数据精度问题包括两个方面: 大整数精度...

  • 整数乘法,你能做多少位?

    整数相乘 问题:在几秒内求出两个正整数的乘积? 这个简单的问题,你能做到哪一步? 如果两个5位整数相乘,这样就可以...

  • C语言基础2-运算符

    如果相除的两个数都是整数的话,则结果也为整数,小数部分省略,如8/3 = 2;而两数中有一个为小数,结果则为小数,...

  • 两个任意精度的整数相乘

    简单说下题目,<1,2,3>代表123,<-7,6,5>代表-765,如果123乘以987,返回121401,所有...

  • lq_jichu_Main29&Main30(大数问题)

    大数问题 Mian29(高精度加法): 问题描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。...

  • 2021-09-07,小数乘小数

    小数乘小数 小数乘法包括小数乘整数,小数乘小数。今天,教学小数乘小数。依然是从...

网友评论

      本文标题:两个数相乘(包括整数和小数),精度问题

      本文链接:https://www.haomeiwen.com/subject/vfcqkxtx.html