在JavaScript中进行简单的运输和处理计算

时间:2011-01-05 16:10:21

标签: javascript

我在使用简单的JavaScript计算时遇到问题。如果订单价格为25美元或更低,我的文件应该为订单增加1.50美元,如果超过25美元,则增加订单的10%。确切的问题是:

许多公司通常会收取运费和手续费。创建一个允许用户在文本框中输入购买价格的网页,其中包含一个计算运费和处理的JavaScript函数。为脚本添加功能,对于小于或等于$ 25.00的任何购买,增加1.50美元的最低运费和手续费。对于任何超过$ 25.00的订单,将运费和处理的总购买价格加10%,但不包括1.50美元的最低运费和手续费。计算百分比的公式是价格*百分比/ 100.例如,计算50.00美元购买价格10%的公式为50 * 10/100,这导致运费和手续费为5.00美元。确定订单的总成本(购买加运费和处理)后,将其显示在警告对话框中。

这是我的代码:

    var price = window.prompt("What is the purchase price?", 0);
var shipping = calculateShipping(price);
var total = price + shipping;
function calculateShipping(price){
if (price <= 25){
 return 1.5;
}
else{
 return price * 10 / 100
}
}
window.alert("Your total is $" + total + ".");

测试时我在提示框中输入一个数字,而不是像我输入一个数字那样进行计算,而是计算好像我输入了一个字符串。即我输入19,它给我191.5或我输入26,它给我262.6

6 个答案:

答案 0 :(得分:2)

使用parseFloat可以帮助您:

var price = parseFloat(window.prompt("What is the purchase price?", 0))
var shipping = parseFloat(calculateShipping(price));
var total = price +shipping;
function calculateShipping(price){
if (price <= 25){
 return 1.5;
}
else{
 return price * 10 / 100
}
}
window.alert("Your total is $" + total + ".");

查看工作地点:http://jsfiddle.net/e8U6W/

另外,一个鲜为人知的更有效的方法就是-0

var price =window.prompt("What is the purchase price?", 0) - 0;

(参见:Is Subtracting Zero some sort of JavaScript performance trick?

请务必对此进行评论,但对于那些阅读代码parseFloat

的人来说并不那么明显

答案 1 :(得分:0)

您可以轻松地将字符串转换为数字

http://www.javascripter.net/faq/convert2.htm

基本上JS提供了parseInt和parseFloat方法......

答案 2 :(得分:0)

实际上,您需要使用parseFloat()

将文本结果转换为浮点值

http://www.w3schools.com/jsref/jsref_parseFloat.asp

答案 3 :(得分:0)

答案 4 :(得分:0)

有点多余的乘法,但问题是输入的数字被视为字符串,而不是数字。您必须将它们转换为浮点数:

var price = parseFloat(window.prompt("What is the purchase price?", 0));
var shipping = calculateShipping(price);
var total = price + shipping;

function calculateShipping(price)
{
  if (price <= 25)
  {
   return 1.5;
  } else {
    return price / 10
  }
}

window.alert("Your total is $" + total + ".");

答案 5 :(得分:0)

var price = parseFloat(window.prompt("What is the purchase price?", 0)); 
var shipping = calculateShipping(price); 
var total = price + shipping; 
function calculateShipping(price){ 
  var num = new Number(price);
  if (num <= 25){  
    return 1.5; 
  } else{  
    return num * 10 / 100 
  } 
} 
window.alert("Your total is $" + total + "."); 

这应该为你做。