在C#中,为什么舍入数学函数Floor,Ceiling和Round不返回int?考虑到函数的结果将始终是一个整数,为什么它返回一个float,double或decimal?
Alv*_*ong 32
double范围为±5.0×10 -324至±1.7×10 308,long范围为-9,223,372,036,854,775,808至9,223,372,036,854,775,807.不幸的是,并非所有积分浮点值都可以用整数表示.
例如,1e19已经超出了64位有符号整数的范围.
(long)Math.Round(1e19) == -9223372036854775808L // WTF?
Run Code Online (Sandbox Code Playgroud)
虽然这是事实,该单参数重载Math.Round(double)和Math.Round(decimal)总是会返回一个整数值,这些重载仍不能返回一个整数值类型.
如果您知道传递给函数的值将返回一个可由整数值类型表示的值,则可以自己进行转换.图书馆不会这样做,因为它需要考虑一般情况.
Hab*_*bib 13
考虑到函数的结果总是一个整数,
不,它不会.您甚至可以使用Math.Round方法(Double,Int32)指定位数
digits类型:
System.Int32
返回值中的小数位数.
| 归档时间: |
|
| 查看次数: |
16065 次 |
| 最近记录: |