我想让这个脚本将值向上舍入为3位小数。(1.1234 tp 1.123等)。
但是,.toFixed(3)
不能完成这项工作,因为我需要这个脚本来打印*.***
格式的每个值 - 包括1和0(1.000,0.000)
.toFixed()
将1.000简化为1。
小提琴: http://jsfiddle.net/EfYev/9/
$(document).ready(function () {
var fruits = {
apple: {
apple: 1,
banana: 0.5,
pineapple: 8
},
banana: {
apple: 2,
banana: 1,
pineapple: 16
},
pineapple: {
apple: 0.125,
banana: 0.0625,
pineapple: 1
}
};
function showTab(name) {
$('div.fruit').hide();
var $div = $('#' + name).show();
var number = parseInt($('.number').val(), 0);
$('span', $div).each(function () {
$(this).text(($(this).data('val') * number).toFixed(3));
});
}
$('.update').click(function () {
var vals = {
apple: 0,
banana: 0,
pineapple: 0
};
$('.dropdown').each(function () {
var fruitVal = $(this).prev('.number').val();
if (fruits[$(this).val()]) {
vals.apple += fruitVal * fruits[$(this).val()].apple;
vals.banana += fruitVal * fruits[$(this).val()].banana;
vals.pineapple += fruitVal * fruits[$(this).val()].pineapple;
}
});
$('.apple').text(vals.apple);
$('.banana').text(vals.banana);
$('.pineapple').text(vals.pineapple);
$('.values').show();
});
showTab($('#dropdown').val());
});
答案 0 :(得分:1)
你无法使用整数或浮点数在javascript中打印尾随零,你必须使用字符串并用零填充它们,例如:
var n = 1.1234,
l = n.toString().split('.').pop().length;
n = pad( n.toFixed(3), l ); // rounds the number and pads it with zeros
function pad(numb, length) {
numb = numb.toString();
while(numb.split('.').pop().length < length) {
numb = numb + '0';
}
return numb;
}
另一种方法是利用toFixed转换为字符串的事实:
function roundWithZeros(numb, decimals) {
var length = numb.toString().split('.').pop().length;
numb = numb.toFixed(decimals);
numb = (+numb).toFixed(length)
return numb;
}