【问题标题】:How to check if TextBox.Text is round number?如何检查 TextBox.Text 是否为整数?
【发布时间】:2021-04-21 12:34:06
【问题描述】:

我需要检查我的 TextBox 是否包含整数,即使是这种格式:“5.00”

我尝试了 Integer.TryParse(),但它返回 False。它仅在这种情况下有效,当 TextBox 包含以下格式的数字时:“5”

【问题讨论】:

  • 检查是否存在“.”或其他小数分隔符?
  • 不使用文本框?代替 NumericUpDown 怎么样?那你可以更好地控制它...
  • 像您的用户在匈牙利那样输入值,而不是像程序员那样。所以“5,00”

标签: c# .net vb.net


【解决方案1】:

将您的字符串编号转换为Double ,然后使用Math.Round() 方法检查

//Convert to Double && round double number and check with original double number
if((Double.TryParse(textValue, out double number)) && Math.Round(number) == number)
{
 //Here you go;
}

.NET Fiddle

【讨论】:

  • 感谢您的小费!在我的 VB.NET 代码中,它看起来像这样:Dim d As Double = Double.Parse(Replace(TextBox.Text, ".", ",")) z = Math.Round(d) If d = z Then ...
  • @Levo,由于浮点数学,此解决方案不适用于“n.9999999999999999”的输入。我不关心代表点,但如果您只需要考虑整数值,那么我建议您使用 int.TryParse 的内置功能,这也为您提供了处理不同文化的优势。
【解决方案2】:

您可以使用接受 NumberStyle 的 Parse 的重载

var i = int.Parse("5.00", System.Globalization.NumberStyles.AllowDecimalPoint);

或TryParse

int.TryParse("5.00", System.Globalization.NumberStyles.AllowDecimalPoint, null, out int nbr);

【讨论】:

    【解决方案3】:

    或者:

    Function IsRound(sNr As String) As Boolean
        Return IsNumeric(sNr) AndAlso Decimal.Truncate(CDec(sNr)) = CDec(sNr)
    End Function
    

    【讨论】:

      猜你喜欢
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      相关资源
      最近更新 更多