gpt4 book ai didi

typescript - typescript 中的数字比较

转载 作者:行者123 更新时间:2023-12-02 14:49:00 25 4
gpt4 key购买 nike

我的问题可能很愚蠢,实际上我有解决这个问题的方法。但我仍然对为什么会这样感兴趣。我的 typescript 文件中有两个数字。这是他们的定义。

mAlarmValue:number;
levelValue:number;

在我还设置了属性 type="number"的 HTML 输入框中,我为 mAlarmValue 填充了一个数字。之后,我对这两个数字进行了比较。这是我所做的。

console.log('Value =',this.mAlarmValue);
console.log("levelValue=",this.levelValue);
if (this.mAlarmValue <= this.levelValue) {
console.log("true");
}

这是实际的控制台输出。

Value = 10
levelValue= 5
true

显然 10 大于 5,但结果却相反。我的解决方法是将数字转换为字符串,然后再将其转换回数字。

console.log('Value =',this.mAlarmValue);
console.log("levelValue=",this.levelValue);
if (parseFloat(this.mAlarmValue.toString()) <= this.levelValue) {
console.log("true");
} else {
console.log(false)
}

现在它显示正确的结果。

Value = 10
levelValue= 5
false

有人知道这里发生了什么吗?感谢您的宝贵时间。

最佳答案

value 的类型HTMLInputElement 的属性始终是字符串,即使您设置了 type="number" .我猜你的代码中某处有这样的东西:

this.mAlarmValue = $('#Alarm').val() as number;

虽然这会编译,但由于值实际上是字符串,您将在运行时得到错误的结果(例如,“10” < “5”为真)。要解决此问题,您需要使用 parseFloat在你阅读 <input> 的那一刻元素,例如

this.mAlarmValue = parseFloat($('#Alarm').val() as string);

或者,如果您使用的是 Vue.js,请确保使用 v-model.number="mAlarmValue"正确地将字符串值转换为数字。

关于typescript - typescript 中的数字比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56862404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com