【问题标题】:parseFloat return 0-2.00 for -2.00parseFloat 为 -2.00 返回 0-2.00
【发布时间】:2015-07-15 06:31:07
【问题描述】:

在我尝试为我的 aspx 页面实现的 JavaScript 中,parsefloat("-2.00') 返回值 0-2.00

显然我遗漏了一些东西,因为 parsefloat 可以处理负数,但是,这里它在调试中显示这个值并且输出结果为 0。

请帮我看看我可能做错了什么。

我在 javascript 中使用的代码

var A=0;
A = document.getElementById('A').value;
A += (parseFloat(A).toFixed(2));
document.getElementById("C").value = roundToTwo(parseFloat(A) + parseFloat(B));

谢谢

【问题讨论】:

  • 我怀疑是这样,但在您的问题中,您的引号不匹配。应该是parseFloat('-2.00')。它对我来说很好。
  • 我实际上已经声明并把这个值放在了一个单独的变量中,然后把它放在了 parsefloat 中。我知道这通常应该有效,但对我来说它给了我 0-2.00
  • 可以分享代码吗?除非我们知道您的实现,因为函数的行为应如此,否则我们无能为力。
  • 我已经添加了部分代码
  • 你能添加与之交互的 HTML 吗?

标签: javascript asp.net parsefloat


【解决方案1】:

更新

请参阅.toFixed() 的文档 - 它返回该数字的字符串表示形式。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

您需要做的是拆分添加两个数字并调用toFixed。像这样

 var A=0; //A is of type number
 A = document.getElementById('A').value; //A is of type string
 A += parseFloat(A); //A is of type number again
 A = A.toFixed(2); //A is of type string again

当您在两个变量上调用+= 时,其中一个是数字,另一个是字符串,那么两者都将被强制转换为字符串并简单地附加。

【讨论】:

  • 问题不大。试试var a; a=0; a+= -2.00;,它的值为-2
  • @dmlittle 感谢您的反馈,我已经更新了我的答案
  • A += parseFloat(A); 仍然是一个字符串,因为 A 的当前值是一个字符串。
【解决方案2】:

问题在于,当您获取 ID 为 A 的 HTML 元素的值时,您将获得一个字符串值。因为您试图将浮点数添加到字符串中,所以浮点数将自动转换为字符串并因此连接。

确保A 始终是一个浮点数应该可以解决这个问题。

A = parseFloat(document.getElementById('A').value);
A += parseFloat(parseFloat(A).toFixed(2));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 2011-12-03
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多