【发布时间】:2012-04-20 02:17:49
【问题描述】:
我希望能够在不使用数学的情况下在未知数量的数字上移动小数点 2 位。我知道这看起来很奇怪,但有限的精度会导致一些变化。我的 javascript 不强,但我真的很想学习如何切分一个数字,并在可能的情况下这样做。所以,我希望你们很棒的人能提供帮助。
问题:
- 575/960 = 0.5989583333333334 使用控制台
- 我想将其复制和粘贴百分比,例如:59.89583333333334%
- 如果我使用数学并乘以 100,由于精度有限,它会返回 59.895833333333336
有没有办法让它成为一个字符串,并且总是将小数点向右移动 2 位以跳过数学?
这也是一个小提琴,代码:http://jsfiddle.net/dandenney/W9fXz/
如果您想知道我为什么需要它并想要精确度,这是我制作的这个小工具,用于在不使用计算器的情况下获得响应百分比:http://responsv.com/flexible-math
【问题讨论】:
-
不要忘记您使用的 Web 浏览器的显示器可能小于 4K x 4K 像素。对于任何计算,大概五六位数的精度就足够了,对吧?
-
你考虑过
toFixed吗?例如(575 / 960).toFixed(4)将是 0.5989(作为字符串)。这可能更容易使用(更不用说更漂亮了)。 -
数学真的很简单,为什么要跳过它?每次
var numb = 0.123; var newNumb = numb/100时,您可以轻松地使用除以 100 将其向左跳 2 个空格。我的意思是,这真的那么难吗? -
如果它是一个字符串,您只需在其上使用 parseFloat
newNumb = parseFloat(numb)/100;这根本不是任何数学运算 -
@SpYk3HH 我通常会跳过这个,但你用“我的意思是,那真的有那么难吗?我有一秒钟的感觉很愚蠢,但后来读到你在没有真正阅读问题的情况下就抨击了我。除法会走向相反的方向,而乘法会遇到我提到的有限精度问题。所以,var numb = 575/960; newNumb = parseFloat(numb)*100;控制台.log(newNumb); > 59.895833333333336 我不擅长 JS,并试图解释我的推理。如果你没有耐心,我建议跳过菜鸟的问题。
标签: javascript decimal