|
|
1
1
有负值吗?我猜是的,因为你有最小值检查,否则你可以跳过它。您甚至可以使用无符号int,这将允许您将更多的双精度值转换为int。 编辑: 另外,如果你有更多的正数,你可以交换前两个条件。这样一来,第一个最有可能失败,减少了比较的总数。 |
|
|
2
1
您的失效标准是:
2) 它比MinValue小吗?
听起来好像你已经把它们盖好了。我的实施方案是:
|
|
|
3
1
这个怎么样。我认为应该减少操作(至少减少比较次数):
编辑: |
|
|
4
1
这取决于你有多少小数位或者你真正关心的小数位。如果您可以说我只关心最多3位小数,那么您可以在int32中存储的最大数字是int.MaxValue/1000。如果您只使用正数,那么您可以使用uint获得更高的数字。在任何情况下,这样做的方法都是一致地为十进制保留空间,并使用*1000对它们进行编码,使用/1000将它们解码成十进制。 |
|
|
5
0
不需要“valueAsInt=”。我相信(Decimal.ToInt32(value)==value))只需少一次赋值就可以得到相同的结果。您是否使用valueAsInt作为某种输出参数? |
|
|
6
0
难道你就不能这样做:
不是.net专家,但我认为这应该是它所需要的。此外,两个比较运算符应为“或相等”,因为最小值/最大值也是有效的。
|