小数点后不给出值

时间:2011-10-21 12:02:58

标签: javascript

这种方法给了我错误的价值,为什么?结果必须为5.088100,但它会为5.o88100提供任何值。如果decmal point之后的第一个数字为零,那么它会将其删除,为什么?

var precision = descriptor.digits ? descriptor.digits[1] : 2;

var int_part = Math.floor(value);

var dec_part = Math.abs(Math.floor((value % 1) * Math.pow(10, precision)));

2 个答案:

答案 0 :(得分:3)

因为您将小数点后的部分转换为整数,所以08变为8 - 就像var dec_part = 08会给您8

如果您希望小数部分使用字符串操作:

var tmp = value.toFixed(precision).split("."),
    int_part = tmp[0],
    dec_part = tmp[1];

答案 1 :(得分:1)

如果您将dec_part视为一个数字,如果绝对清楚前导零被删除。数字不能也不能有前导零。

你真正要做的是将这两个部分作为字符串,使用split()更容易:

var parts = value.split(".");
var int_part = parts[0],
var dec_part = parts[1];

但至少,如果你只是想将value四舍五入到一个特定的精度,你可以放弃那些复杂的东西并使用toFixed()

value = value.toFixed(precision);