我希望能够在不使用数学的情况下将小数点移动 2 位,跨越未知数量的数字。我知道这看起来很奇怪,但有限的精度会导致一些变化。我的 javascript 不强,但我真的很想学习如何分割数字并在可能的情况下执行此操作。所以,我希望你们这些了不起的人能提供帮助。
问题:
- 575/960 = 0.5989583333333334 使用控制台
- 我想将其设为可复制和粘贴的百分比,例如:59.89583333333334%
- 如果我使用数学方法并乘以 100,由于精度有限,它会返回 59.895833333333336
有没有办法让它成为一个字符串,并且总是将小数点向右移动 2 位以跳过数学运算?
这里还有一个 fiddle ,代码是:http://jsfiddle.net/dandenney/W9fXz/
如果您想知道我为什么需要它并想要它的精确度,它就是我制作的这个小工具,无需使用计算器即可获得响应百分比:http://responsv.com/flexible-math
最佳答案
如果原始数字是这种类型的已知结构并且总是在小数点右边至少有两位数字,则可以这样做:
function makePercentStr(num) {
var numStr = num + "";
// if no decimal point, add .00 on end
if (numStr.indexOf(".") == -1) {
numStr += ".00";
} else {
// make sure there's at least two chars after decimal point
while (!numStr.match(/\.../)) {
numStr += "0";
}
}
return(numStr.replace(/\.(..)/, "$1.")
.replace(/^0+/, "") // trim leading zeroes
.replace(/\.$/, "") // trim trailing decimals
.replace(/^$/, "0") // if empty, add back a single 0
+ "%");
}
带有测试用例的工作演示:http://jsfiddle.net/jfriend00/ZRNuw/
关于javascript - 我可以在没有数学的情况下在 javascript 中移动小数点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10239378/