我有一个jQuery 1.5+脚本,你在下拉菜单(1,2,3等)中选择一个数量,然后将该数量乘以$ 1.50来显示总价。基本上 - 它将所选数量(1,2,3等)乘以1.50美元的基本价格 - 但是我无法弄清楚如何正确显示价格小数 - 例如:如果您选择数量为2,价格正确显示为$ 3(无小数)。但是,如果您选择1或3,则价格显示为$ 1.5 / $ 4.5 - 在小数位数百分之一处缺少0。
这是代码 - 任何想法如何在没有两位小数的情况下显示第二个0? 3美元应保持3美元,但4.5美元应该变成4.50美元等等 - 如果没有将所有数字显示为两位小数,我就无法工作,这就是我被卡住的地方!
<script type='text/javascript'>
$(function() {
$('#myQuantity').change(function() {
var x = $(this).val();
$('#myAmount').text('$'+(x*1.5));// this is the part that isn't displaying decimals correctly!
});
});
</script>
我正在尝试像result = num.toFixed(2);但还是无法让它发挥作用。
谢天谢地!
答案 0 :(得分:56)
这应该做的工作:
var formattedNumber = (x * 1.5).toFixed(2).replace(/[.,]00$/, "");
答案 1 :(得分:21)
我建议:
Math.round(floatNumber*100)/100;
它会自动添加0,1或2个小数位。
答案 2 :(得分:19)
$(document).ready(function() {
$('#itemQuantitySelect_3').change(function() {
var itemPrice = 1.50;
var itemQuantity = $(this).val();
var quantityPrice = (itemPrice * itemQuantity);
if(Math.round(quantityPrice) !== quantityPrice) {
quantityPrice = quantityPrice.toFixed(2);
}
$(this).next("span").html("$" + quantityPrice);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="/" method="post">
<select id='itemQuantitySelect_3' name="itemQuantity_3">
<option value='1'>1 Item</option>
<option value='2'>2 Items</option>
<option value='3'>3 Items</option>
</select>
<span>$1.50</span>
</form>
答案 3 :(得分:14)
怎么样
var str = num.toFixed(2).replace(/\.00$/, '');
答案 4 :(得分:4)
如果数字%1没有返回零,则它不是整数。
//var s='123';
var s='1.2';
s=Number(s);
alert(s%1? s.toFixed(2): s);
答案 5 :(得分:3)
const number = Number(Number(value).toFixed(t));
使用此方法,您可以将数字转换为正确的小数位数,并在转换回Number时,摆脱所有无用的零。
答案 6 :(得分:0)
另一种可能性,将字符串强制转换为数字并利用0.00为假的事实来确定它的显示方式:
+(1.123456.toFixed(2)) || 0;
>> 1.12
其中:
+(0.00123.toFixed(2)) || 0;
>> 0
答案 7 :(得分:0)
实际上有一个更加动态的解决方案来实现这一目标。这在您的位数会发生变化时尤其有用。
var formattedNumber = (x * 1.5).toFixed(2).replace(/\.0+$|(\.\d*[1-9])(0+)$/, "");
这将结束于此:
+(2.1234).toFixed(2).replace(/\.0+$|(\.\d*[1-9]);
>> 2.12
// but as mentioned it is dynamic
+(2.1234).toFixed(3).replace(/\.0+$|(\.\d*[1-9]);
>> 2.123
+(2).toFixed(3).replace(/\.0+$|(\.\d*[1-9]);
>> 2
答案 8 :(得分:0)
使用此功能:
//E.g. 0.5 becomes 0.50; 7 stays as 7.
function twoDecimalPlacesIfCents(amount){
return (amount % 1 !== 0) ? amount.toFixed(2) : amount;
}
答案 9 :(得分:0)
如果您想要基于odrm的想法的通用解决方案。
function toFixed(value, fractionDigits) {
return value.toFixed(fractionDigits).replace(/[.,](00)|0$/, '')
}
答案 10 :(得分:0)
value % 1 !== 0 ? value.toFixed(2) : value;
答案 11 :(得分:0)
const getPercentage = (partialValue, totalValue) => {
return ((100 * partialValue) / totalValue).toFixed(2).replace(/[.,]00$/, "");
};
你可以直接使用这个函数,并在任何你想要的地方调用它