计算 123456789012345678901234.1234 * 1.3 的结果如何正确输出字符串?

需要计算的数字长度大概在30位内, 超大数(超过Number.MAX_SAFE_INTEGER)计算后会被转化为带e的科学计数法(1.604938257160494e+23)

请问如何让转化后的结果以字符串呈现(不带e)呢?

阅读 2.8k
2 个回答

mathjs

math.config({number: "BigNumber", precision:64});
math.evaluate('123456789012345678901234.1234 * 1.3 ').toFixed(5)
//'160493825716049382571604.36042'

可以考虑BigInt去做,但是要处理一下小数。

> (BigInt(123456789012345678901234) * BigInt(13) / BigInt(10)).toString()
< '160493825716049391543910'

// -----

> 123456789012345678901234n * 13n / 10n
< 160493825716049382571604n
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题