【问题标题】:Best way for check if a variable is a whole number检查变量是否为整数的最佳方法
【发布时间】:2015-11-03 11:42:01
【问题描述】:

我需要检查一个变量是否为整数,我有很多简单的解决方案。

first one

如果(地板(foobar)== foobar)

other one

如果(d % 1 == 0)

另一个是将这个数字转换为字符串并用点(。)分割并检查第二个数字是否为“00”

d.toString().split('.')[1/]=="00"

但我认为这不是最佳做法。

很多这样的方式,我想要一个所有人都能接受的标准解决方案。

【问题讨论】:

  • 这是另一个(int)d == d
  • 不要试图学习数十亿种“最佳”方式来编写代码。编写清晰易懂的代码并设定性能目标。然后测量性能。如果性能不可接受,请隔离哪里代码性能不佳,并在那里进行优化。
  • @Dennis_E 别再迂腐了,你知道它应该如何工作
  • @BinkanSalaryman 但它不起作用。这就是重点。

标签: c#


【解决方案1】:

我可能会选择

(d % 1) < epsilon

来自链接问题的评论线程。它比您的两个示例都慢,因此您可能每秒只能执行几百万次,而不是每秒几百万次。从好的方面来说,它可以很好地处理浮点漂移以及最小值和最大值

【讨论】:

  • +1 表示“几百万而不是几百万”。过早的优化确实是万恶之源。
【解决方案2】:

IMO,(int)d == d 在可读性方面是最好的。

不过,我不知道执行时间。

【讨论】:

  • int.MaxValuedouble.MaxValue 相比相当小
【解决方案3】:

在 C# 中,您可以使用内置函数 int.TryParse()

int x;
bool result= int.TryParse(integerNumber.ToString(), out x);

如果结果为真,则为整数,否则为非。

【讨论】:

  • 不完全。并非所有整数 doubles 都是有效整数。 int.TryParse((int.MaxValue + 1.0).ToString(), out _)返回false
猜你喜欢
  • 1970-01-01
  • 2012-05-23
  • 2012-11-06
  • 2013-06-28
  • 2018-02-17
  • 1970-01-01
  • 2017-08-23
  • 2015-05-30
  • 2011-10-18
相关资源
最近更新 更多