我有一个浮点型
var num = 9.963407954080194743
用num * (10 ** 18) 计算得出的结果是9963407954080195000, 但是我想要得到的结果是9963407954080194743
问ChatGPT问题得以解决:
GPT提供的代码:
import Big from 'big.js';
const num1 = new Big('9.963407954080194743');
const num2 = new Big('10').pow(18);
const result = num1.times(num2);
console.log(result.toString()); // 输出: 9963407954080194743
上面的问题解决了,但是我继续运行代码的时候又遇到了错误,报错的代码如下:
const scientificNumber = "299200.450137044752492962";
const num = new Big(scientificNumber);
const result = num.times(10 ** 18)
console.log(toBN(result));
报错如下:
报错原因:num.times(10 ** 18)相乘以后得出的结果是用科学计数法表示的值2.99200450137044752492962e+23,toBN(result),如果result不是整数形式的值就会报错
解决方法:const result = num.times().toFixed()
因为相乘以后都是整数,没有小数位数,所以得到出的结果会是 299200450137044752492962