javascript - 晚餐成本计算器无法将字符串转换为整数

标签 javascript html parseint

我正在使用 parseInt 将 .values 从字符串转换为数字。但是,如果用户输入十进制值,则输出为 NaN。这是我的代码:

Dinner Cost:<input type="text" id="cost" /><br /><br />
Tax Rate:<input type="text" id="taxRate" /><br /><br />

<button id="btn">Determine Total Costs</button><br /><br />

<p id="para"></p>

document.getElementById("btn").addEventListener('click', totalCosts);

function totalCosts() {

  var dinnerCosts = document.getElementById("cost").value;
  var taxRate = document.getElementById("taxRate").value;
  taxRate = parseInt(taxRate);
  dinnerCosts = parseInt(dinnerCosts);


  var taxCost = dinnerCosts * taxRate;
  var totalCost = dinnerCosts + taxCost;

  return document.getElementById("para").innerHTML = "Your dinner cost " + dinnerCosts + ", your tax costs " + taxCost + ", for a total cost of " + totalCost;
}

我做错了什么?有没有比 parseInt 更合理的方法将这些默认字符串转换成数字?

谢谢!

最佳答案

使用 parseFloat() 而不是 parseInt() 用法:taxRate = parseFloat(taxRate);

作为更好的编程实践,您应该避免此类转换中的异常。在这种 Javascript 场景中进行稳健类型检查的一种简单方法是避免:

  • 未声明的变量
  • Javascript 对象(又名字典)上未声明的属性
  • Lnull 值
  • NaN 值

这是一个简单快速的概述:

//
var vfftest       = 0.05;                       // float
var viitest       = 3000;                       // integer
var vssblank      = '';                         // empty string
var vssnonblank   = 'hello';                    // non-empty string
var vddempty      = {};                         // dictionary with no name-value pairs
var vddnonempty   = {'alpha':1,'bravo':'two'};  // dictionary with name-    value pairs
var vnull         = null;                       // null

// check parseFloat
console.log( parseFloat(vssnonblank) ); // NaN
console.log( parseFloat(vssblank) );    // NaN
console.log( parseFloat(vfftest) );     // 0.05
console.log( parseFloat(viitest) );     // 3000
console.log( parseFloat(vnull) );       // NaN
console.log( parseFloat(vddempty) );    // NaN
console.log( parseFloat(vddnonempty) ); // NaN
console.log( parseFloat(vnoExisto) );   // EXCEPTION

除此之外请引用this链接并查看如何避免此类转换中的异常。

关于javascript - 晚餐成本计算器无法将字符串转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43159214/

相关文章:

javascript - 使用 Node.js 和 mysql 表实现 Jade

javascript - Performance & "Better Practice": with statement vs. 带一堆参数的函数

javascript - 从 github url 中查找用户、repo 和路径

html - 如何使用 CSS 将文本从一个框流到另一个框

html - 将滚动横幅中的文本向右对齐的问题

html - 如何从 indexedDB 获取对象库?

带有正数和负数的 Javascript ParseInt

javascript - 在 Node.js 中,如何动态地将函数参数传递给子函数?

Java 组合框错误

java - 从作为几个局部变量之一的 JTextField 获取数据