javascript - 我可以在没有数学的情况下在 javascript 中移动小数点吗?

标签 javascript decimal

我希望能够在不使用数学的情况下将小数点移动 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/

相关文章:

javascript - Orchard CMS中如何处理来自JS的跨域web服务调用

javascript - 将动态元标记添加到 React 静态站点,使用 StaticSiteGeneratorPlugin 创建

html - <input type ="number"/> with a custom step "n"but allow decimals

printing - ARM 汇编以十进制形式打印寄存器值

c# - 在 C# 中,十进制值在第一个小数点处停止

algorithm - 在不同的基础上计数

javascript - 如何在 PapaParse 中使用 Promises?

javascript - 基于另一个 div 的类触发 onclick 事件?

.net - JQuery 工具工具提示与 UpdatePanel

c++ - 在 C++ 中将十六进制字符串转换为十进制数