当前位置: 首页 > 知识库问答 >
问题:

typescript中的数字比较

施选
2023-03-14

我的问题可能很傻,实际上我有一个解决这个问题的方法。但我仍然对它为什么会发生感兴趣。我的打字脚本文件中有两个数字。这是他们的定义

mAlarmValue:number;
levelValue:number;

在我的超文本标记语言输入框中,我也设置了属性type="number",我填充了一个数字为mAramValue。之后,我对这两个数字进行了比较。这是我所做的。

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

有人知道这里发生了什么吗?谢谢你的时间。

共有2个答案

栾越
2023-03-14

我的解决方法是将数字转换为字符串,然后再将其转换回数字。

您可以在最新的es6中执行以下操作

  • 将字符串转换为数字=

然后,您可以为您的案例执行以下操作

    if (+mAlarmValue >= +levelValue) {
         console.log(true);
    } else {
         console.log(false);
    }

有关转换Typescript中类型的更多信息,请检查此处

将字符串转换为数字的TypeScript

融焕
2023-03-14

HTMLInputElementvalue属性的类型始终为字符串,即使您设置了type=“number”。我猜你的代码中有这样的东西:

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

虽然这将进行编译,但由于值实际上是字符串,因此在运行时会得到错误的结果(例如,“10”

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

或者,如果您正在使用Vue。js,确保使用v-model。number=“mAlarmValue”将字符串值正确转换为数字。

 类似资料:
  • 问题内容: 我听说散列(即将字符串或对象转换为数字)用于字符串等,因为比较数字比字符串更容易。如果为真,这是什么原因? 问题答案: 不一定是这种情况,但大多数时候可能是这样。 请考虑以下情况: 我想比较字符串“ apples”和“ oranges”。如果我只想确定“ apples” ==“ oranges”,我只需要比较每个字符串的第一个字符:’a’!=’o’=>“ apples”!=“ oran

  • 问题内容: 我有两个字符串,分别为@CountryLocationIDs和@LocationIDs,其值分别为: 然后,我需要另一个变量中的输出为: 任何人都请帮忙…预先感谢… 问题答案: 我创建了一个表值函数,该函数接受两个参数,第一个是带有ID的字符串,第二个是字符串中的定界符。 创建函数后,只需使用set运算符即可: 已编辑 有了它,您将自动从两个字符串中获得不同的值,因此您不需要使用子句

  • 我已经声明了一个实现可比较接口和compareTo方法的类,使用employee ID比较两个员工。创建的类对象插入数组列表。现在,当我使用collections.sort(arrayList对象)时,它工作得很好。我对collective和comparator接口之间的比较有何不同感到困惑。我想知道如何在纯粹由数字组成的employee id字符串和其他字符串employee id之间进行比较,

  • 我无法进行数字比较: 问题是,它从第一个数字开始比较数字,即9大于10,但1大于09。 我如何将数字转换成一种类型来进行真正的比较?

  • 我正在与返回JSON的Axios进行API调用。API将CUSIP返回为类型String,但是,我希望将其接收为类型Number。我创建了一个接口,它具有类型类型为数字,但是当我得到变量时,它仍然被视为字符串。 API调用和一些逻辑: 名为General的接口,其中我将CUSIP转换为数字: 问题是:不是将[CUSIP 1337]打印为[2 1337=1339],而是打印[21337]。我很乐意帮

  • 问题内容: 在Java中,所有数字类型都从java.lang.Number扩展。拥有如下所示的方法是否是一个好主意: 我担心双精度2.00000不等于int2的情况。这些是否由内置的equals处理?如果没有,有什么办法可以在Java中编写一个简单的数字比较功能?(可以使用apachecommons这样的外部库) 问题答案: 一个是 从来没有 到。此外,a 与a不同。 Java具有原始类型和引用类