首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Javascript中的小数点

使用Javascript中的小数点
EN

Stack Overflow用户
提问于 2018-08-03 14:19:47
回答 3查看 103关注 0票数 1

我目前使用的是小数点,但Javascript似乎一直在舍入。

例如,下面是我需要做的计算之一:

(1 + 0.05) ^ (1/12)

这应该返回1.0040741237836483016054196026721,但是我得到的只有1。

我尝试过使用Big.js库,但它仍然只返回1,我需要那些小数点才能得到一个准确的结果,有办法指定我想要的小数位数吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-03 14:28:37

^符号在javascript中具有位XOR语义。见这里

下面的代码片段显示了如何获得正确的结果:

代码语言:javascript
复制
console.log(`(1 + 0.05) ^ (1/12) = ${Math.pow((1 + 0.05), (1/12))}`);

票数 4
EN

Stack Overflow用户

发布于 2018-08-03 14:34:28

正如在另一个答案中所指出的,您可以使用普通的JS,但是如果您需要精确地执行数学操作,那么您可以查看像decimal.js这样的库来帮助维护这种精确性。

代码语言:javascript
复制
const vanJS = Math.pow(1 + 0.05, 1/12);
const decJS = Decimal.pow(1 + 0.05, 1/12).toPrecision(20);

console.log({ vanJS, decJS });
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/decimal.js/10.0.1/decimal.min.js"></script>

票数 1
EN

Stack Overflow用户

发布于 2018-08-03 14:37:19

您应该始终使用数学 (MDN的官方源代码)库进行计算。您可以使用Pow(val, exponential)函数作为您的优势。

如果你有1/2,那么你可以说它是2^(-1)。这样,您就可以始终将除法转换为指数

Javascript在精度方面存在一些问题,您将很难处理浮点数。

代码语言:javascript
复制
var amount  = (1 + 0.05) ^ (1/12);
var amountPow = Math.pow(1 + 0.05, Math.pow(12,-1));
console.log((1 + 0.05) ^ (1/12)); // Normal
console.log(amountPow); // Exponential function Math

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51674661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档