Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中使用分数?_Javascript - Fatal编程技术网

如何在Javascript中使用分数?

如何在Javascript中使用分数?,javascript,Javascript,在Javascript中使用分数乘法和除法的最佳方法是什么 控制台中的以下代码显示了我在将1/5乘以1/10时收到的一个错误示例: console.log( (1/5) * (1/10)); 它将打印0.020000000000000004而不是0.02 我试图在客户端用Javascript执行一些化学平衡计算(化学计量学)。数学需要一些矩阵计算,包括确定两个矩阵的零空间或核。我能够找到一个名为sylvester.js的库,用于一些矩阵运算,但仍然无法找到任何用于查找内核的javascript

在Javascript中使用分数乘法和除法的最佳方法是什么

控制台中的以下代码显示了我在将1/5乘以1/10时收到的一个错误示例:

console.log( (1/5) * (1/10));
它将打印0.020000000000000004而不是0.02

我试图在客户端用Javascript执行一些化学平衡计算(化学计量学)。数学需要一些矩阵计算,包括确定两个矩阵的零空间或核。我能够找到一个名为sylvester.js的库,用于一些矩阵运算,但仍然无法找到任何用于查找内核的javascript实现。作为实现的一部分,我需要能够可靠地乘法分数

我考虑过四舍五入到一定的精度,但对此感到不安,于是开始重写代码,只使用整数,然后将所有内容乘以一个设定的数字,这样我就不必使用分数。但这似乎仍然不是最好的方法。我该怎么办

编辑
我应该提到,我的一个要求是,我有清晰、可读的代码,并且该领域在分数方面很好地理解。我想写的操作是以这样一种方式执行的,我不只是在处理浮点数学被破坏的问题。我的问题与“浮点数学坏了吗?”不同,因为我不是在问是否有问题,我知道有问题,但我如何绕过这个问题,仍然用分数编写干净的代码。另外,在javascript中搜索分数时,另一个答案甚至不会出现

如果你想使用有理数,使用实现有理数的库对我来说似乎很自然。也许是个不错的选择。我对这个库没有任何经验,但它看起来相当稳定和轻量级。此外,我已经编写了C++中的分数,所以我知道它不应该有任何显著的开销。由于JS中的所有数字都是浮点数,除非您实现自己的数学例程,否则您基本上就是SOL。您只能在显示时使用舍入。只需将除法作为计算的最后一步
(1/5)*(1/10)
1/50
相同,这确实会导致
0.02
@Xufox,这就是我目前开始重写它的方式。我最不喜欢这种方法的一点是,它增加了逻辑,混淆了我试图做的事情的主要逻辑。当使用分数编写时,计算内核背后的数学更清晰。这很难理解,而且我有一些bug,因此它们变得更难修复。感谢图书馆的提示,这可能是我要走的路线,但是你为什么要使用图书馆呢?你有使用这个库的经验吗?嗯,如果你想使用有理数,我觉得使用一个实现有理数的库是很自然的。我对这个库没有任何经验,但它看起来相当稳定和轻量级。我也写了C++中的分数,所以我知道它不应该是一个显著的开销。谢谢。你觉得把你在评论中写的东西包括在你的实际答案中怎么样?谢谢你的建议。我已经更新了答案。