我在Javascript中有一个double值,例如,值为1.0883076389305e-311。
我想以以下形式表示它,例如使用“ bc”实用程序来计算扩展/更高的精度/比例形式:

$ bc
scale=400
1.0883076389305000*10^-311
.0000000000000000000000000000000000000000000000000000000000000000000\
00000000000000000000000000000000000000000000000000000000000000000000\
00000000000000000000000000000000000000000000000000000000000000000000\
00000000000000000000000000000000000000000000000000000000000000000000\
00000000000000000000000000000000000000010883076389305000000000000000\
0000000000000000000000000000000000000000000000000000000000000


我需要一个Java脚本bigint库或代码来产生与数字相同的输出,并以数字的扩展/更高精度形式输出。

谢谢!

最佳答案

这太可怕了,但是我可以想到的每个测试用例都可以使用:

Number.prototype.toFullFixed = function() {
    var s = Math.abs(this).toExponential();
    var a = s.split('e');
    var f = a[0].replace('.', '');
    var d = f.length;
    var e = parseInt(a[1], 10);
    var n = Math.abs(e);

    if (e >= 0) {
        n = n - d + 1;
    }

    var z = '';
    for (var i = 0; i < n; ++i) {
        z += '0';
    }

    if (e <= 0) {
        f = z + f;
        f = f.substring(0, 1) + '.' + f.substring(1);
    } else {
        f = f + z;
        if (n < 0) {
            f = f.substring(0, e + 1) + '.' + f.substring(e + 1);
        }
    }

    if (this < 0) {
        f = '-' + f;
    }

    return f;
};


如果您发现不能正确解析的数字,即n !== parseFloat(n.toFullFixed()),请告诉我它是什么!

09-28 00:31