Javascript 代码总是返回NAN
我目前正在学习编码课程的介绍,我们正在与JS合作。我的代码很好,但我遗漏了一些东西,因为对于折扣输出,我总是得到NAN。有人知道为什么会这样吗Javascript 代码总是返回NAN,javascript,Javascript,我目前正在学习编码课程的介绍,我们正在与JS合作。我的代码很好,但我遗漏了一些东西,因为对于折扣输出,我总是得到NAN。有人知道为什么会这样吗 //Input var orderAmount = prompt("What is the order amount?"); var contractor = prompt("Are you a contractor? yes/no?"); var employee = prompt("Are you an employee? yes/no?"); va
//Input
var orderAmount = prompt("What is the order amount?");
var contractor = prompt("Are you a contractor? yes/no?");
var employee = prompt("Are you an employee? yes/no?");
var age = prompt("How old are you?");
//Constant
var employeeDisc = .10;
var largeOrderDisc = .05;
var contractorDisc = .20;
var taxRate = .08;
var noTax = 0;
//Calculations
if (orderAmount >= 800) {
var discounta = orderAmount * largeOrderdisc;
}else {
var discounta = 0;
}
if (contractor == "yes") {
var discountc = orderAmount * contractorDisc;
}else if(contractor == "no") {
var discountc = 0;
}
if(employee == "yes") {
var discounte = orderAmount * employeeDisc;
}else if(emplyee == "no") {
var discounte = 0;
}
var discount = discountc + discounte + discounta;
var subtotal = orderAmount - discount;
if (age >= 90){
tax = subtotal * noTax;
}else {
tax = subtotal * taxRate;
}
total = subtotal - tax;
//Output
document.write("Original Price: $" + orderAmount);
document.write("Discount: $" + discount);
document.write("Subtotal: $" + orderAmount);
document.write("Tax: $" + tax);
document.write("Final Price: $" + total);
document.write("Final Price: $" + total);
很抱歉代码没有编译。现在已经修好了。现在的问题是我的document.write不是在写 您正在尝试使用字符串执行算术计算和比较。是“Not A Number”,这是失败的算术运算的数值结果(例如除以零,或任何NaN计算) 注意下面使用的是数字,而不是字符串:
var employeeDisc = .10;
var largeOrderDisc = .05;
var contractorDisc = .20;
var taxRate = .08;
var noTax = 0;
//Calculations
if (orderAmount >= 800) {
var discounta = orderAmount * largeOrderdisc;
} else {
var discounta = 0;
}
此外,将返回一个字符串。在进行计算之前,应将其转换为数字。您可能想使用或 下面是一个生成
NaN
的简单示例:
var x = 'x5';
var y = '2';
var difference = x - y;
console.log( difference ); // Note: you can use console.log() to write messages to the console in your browser's developer tools. It is handy for debugging.
您正在尝试使用字符串执行算术计算和比较。是“Not A Number”,这是失败的算术运算的数值结果(例如除以零,或任何NaN计算) 注意下面使用的是数字,而不是字符串:
var employeeDisc = .10;
var largeOrderDisc = .05;
var contractorDisc = .20;
var taxRate = .08;
var noTax = 0;
//Calculations
if (orderAmount >= 800) {
var discounta = orderAmount * largeOrderdisc;
} else {
var discounta = 0;
}
此外,将返回一个字符串。在进行计算之前,应将其转换为数字。您可能想使用或 下面是一个生成
NaN
的简单示例:
var x = 'x5';
var y = '2';
var difference = x - y;
console.log( difference ); // Note: you can use console.log() to write messages to the console in your browser's developer tools. It is handy for debugging.
在Javascript中,每当您尝试对非数字的数据进行数学运算时,都会返回NaN(非数字)。您需要检查它在哪个步骤返回字符串,而不是Javascript中的数字。每当您尝试对非数字的数据进行数学运算时,都会返回NaN(非数字)。您需要检查它在哪个步骤返回字符串而不是数字,这是因为您在if子句中声明了折扣变量。在if子句之外定义它们,那么就没有问题了
var discounta;
if (a > b) {
discounta = 0.1;
}
else {
discounta = 0.2;
}
还要检查javascript的变量范围。这是因为您在if子句中声明了折扣变量。在if子句之外定义它们,那么就没有问题了
var discounta;
if (a > b) {
discounta = 0.1;
}
else {
discounta = 0.2;
}
还要检查javascript的变量范围。虽然您确实应该使用数字变量,但javascript会根据需要转换值。我测试了您的代码,它的真正问题在于以下两行:
}else (contractor == "no") {
及
这些应该是
}else if(contractor == "no") {
及
脚本甚至不会按发布的方式编译,因此我不知道您是如何得到NaN的。虽然您确实应该使用数字变量,但JavaScript会根据需要转换值。我测试了您的代码,它的真正问题在于以下两行:
}else (contractor == "no") {
及
这些应该是
}else if(contractor == "no") {
及
脚本甚至无法按发布的方式编译,因此我不知道您是如何得到NaN的。您的else语句现在不正确,因此代码根本无法运行。删除类似
(contractor==“no”)
这是一把小提琴,显示它在工作 您的else语句现在不正确,因此代码根本无法运行。删除类似
(contractor==“no”)
这是一把小提琴,显示它在工作 看起来JS实际上会在这里将输入转换为数字<代码>'5'*'2'->10'5'+'2'='52',所以不要依赖它。这里-是的,但这不会产生
NaN
JavaScript确实有类型强制,但我避免了它。我不喜欢通常由类型强制引起的意外结果。似乎JS实际上会在这里将输入转换为数字<代码>'5'*'2'->10'5'+'2'='52',所以不要依赖它。这里-是的,但这不会产生NaN
JavaScript确实有类型强制,但我避免了它。我不喜欢通常由类型强制引起的意外结果。嗯,discountc
,discounte
或discounta
是NaN
。你不应该这样比较,先转换为int:“15”>“10”>true;“15”>“9”->错误
请发布工作代码(当前代码甚至没有编译)并提供一个提琴以获得更有用的答案。以上所有内容的补充:if(contractor==“yes”)}否则如果(contractor==“no”){
-如果用户在提示框中键入fgsfds
(是的,用户可能会这么愚蠢)。嗯,discountc
,discounte
或discounta
都是NaN
。你不应该这样比较,先转换成int:“15”>“10”->true;“15”>“9”->false
请发布工作代码(当前代码甚至没有编译)并提供一把小提琴,以获得更有用的答案。上述所有内容的补充:if(contractor==“yes”)}else if(contractor==“no”){
-如果用户在提示框中键入fgsfds
,该怎么办?(是的,用户可能如此愚蠢)。实际上,JavaScript在这方面与C或Java不同。只有函数才能创建新的作用域。不过,出于可读性的目的,我同意你的建议。实际上,JavaScript在这方面与C或Java不同。只有函数才能创建新的作用域。尽管如此,出于可读性的目的,我同意你的建议。