思路:首先将两个数转换为字符串,然后分别获取两个数的小数点后的位数,并取最精确的小数位数,再将乘法结果指定小数点后的数字位数。

function multiply(a, b) 
{
    //先将两个数转换成字符串
    let str1=a.toString()
    let str2=b.toString()
    //获取小数点后的位数
    let lenA=(str1.indexOf('.')==-1)?0:(str1.length-1-str1.indexOf('.'))
    let lenB=(str2.indexOf('.')==-1)?0:(str2.length-1-str2.indexOf('.'))
    //取最精确的小数位数
    let len=Math.max(lenA,lenB)
    //把数字指定小数点后的数字位数
    return (a*b).toFixed(len)
}

总结:由于乘法涉及到精度问题,故需要对数字进行处理。求小数点后的位数可以先将数字转换为字符串,然后使用indexOf查找.所在的位置,如果没找到就是0,反之就根据字符串长度以及.所在的位置计算小数位,一定要取两者中最精确的那一位,最后使用n.toFixed(len)方法,指定n的小数位数为len位。