Javascript操作符问题使用Decimals

时间:2011-12-01 21:49:07

标签: javascript html math

我得到的一切几乎都在我想要的地方。我唯一的问题是,由于某种原因,我无法让bctf1添加正确。假设bctf = 10,代码的结果将是100.59而不是10.59。假设bctf = 25,代码的结果为$251.03而不是26.03

// BUY TOTAL
<script type="text/javascript">
function buytot(){
var bctf = document.getElementById('buyctf').value;
if(bctf.charAt(0) == "0" || bctf.charAt(0) == "" || bctf.charAt(0) == " "){
bctf2 = "0.00";
} else {
pcbctf = bctf*.029;
pcplusc = pcbctf+.30;
bctf1 = bctf+pcplusc;
bctf2 = Math.round(bctf1*100)/100;
}
document.getElementById('buyctotal').innerHTML = bctf2;
}
</script>

这是带有JS的HTML - &gt; http://jsfiddle.net/hhWDe/5/

4 个答案:

答案 0 :(得分:1)

强制数据类型:

var bctf = parseFloat(document.getElementById('buyctf').value);

答案 1 :(得分:1)

您需要将元素值属性返回的String值转换为数字。像这样:

var bctf = Number(document.getElementById('buyctf').value);
// OR
var bctf = parseFloat(document.getElementById('buyctf').value, 10);

另外,考虑使用“toFixed”数字方法获取整个美元金额的“.00小数位数:

var oneDollar = 1;
oneDollar; // => 1
oneDollar.toFixed(2); // => "1.00"

答案 2 :(得分:1)

您可以添加“+”将值转换为整数(或浮点数)。

它将接受任何字符串并转换它,如果字符串无法转换,它将返回NaN:

所以你的脚本将如下所示:

var bcft = +document.getElementByID('buyctf').value;

答案 3 :(得分:0)

谢谢大家:)这是工作代码。我在其他地方后添加bctf0 = Number(document.getElementById('buyctf').value);,一切正常。

// BUY TOTAL
function buytot(){
var bctf = document.getElementById('buyctf').value;
if(bctf.charAt(0) == "0" || bctf.charAt(0) == "" || bctf.charAt(0) == " "){ bctf2 = "0.00";
} else {
bctf0 = Number(document.getElementById('buyctf').value);
pcbctf = bctf0*.029;
pcplusc = pcbctf+.30;
bctf1 = bctf0+pcplusc;
bctf2 = Math.round(bctf1*100)/100;
}
document.getElementById('buyctotal').innerHTML = bctf2;
}