C# 数值

2018-01-16 00:54 更新

C#数值

8位和16位整数

8位和16位整数类型为byte,sbyte,short和ushort。

C#根据需要将它们隐式转换为更大的类型。

当尝试将结果分配回小的整数类型时,可能会导致编译时错误:


short x = 1, y = 1; 
short z = x + y; // Compile-time error 

x y 隐式转换为 int ,以便可以执行加法。

结果也是一个int,不能隐式转换为短。

为了使这个编译,我们必须添加一个显式转换:


short z = (short) (x + y);

特殊浮点值和双精度值

浮点类型具有特定操作对待的值。

这些特殊值是NaN(非数字),+无穷大,-Infinity和-0。

float和double类具有NaN,+ Infinity和-Infinity的常量,以及其他值,如MaxValue,MinValue和Epsilon。

例如:


Console.WriteLine (double.NegativeInfinity); // -Infinity 

表示double和float的特殊值的常量如下:

特殊值双常量浮点常量
NaNdouble.NaNfloat.NaN
+infinitydouble.PositiveInfinityfloat.PositiveInfinity
-infinitydouble.NegativeInfinityfloat.NegativeInfinity
-0-0.0-0.0f

将非零数除以零会导致无限值。例如:


Console.WriteLine ( 1.0 / 0.0); // Infinity 
Console.WriteLine (-1.0 / 0.0); // -Infinity 
Console.WriteLine ( 1.0 / -0.0); // -Infinity 
Console.WriteLine (-1.0 / -0.0); // Infinity 

将零除零,或从无穷大中减去无穷大,得到NaN。例如:


Console.WriteLine ( 0.0 / 0.0); // NaN 
Console.WriteLine ((1.0 / 0.0) - (1.0 / 0.0)); // NaN 

当使用==,NaN值永远不等于另一个值,甚至另一个NaN值:


Console.WriteLine (0.0 / 0.0 == double.NaN); // False 

要测试值是否为NaN,必须使用float.IsNaN或double.IsNaN方法:


Console.WriteLine (double.IsNaN (0.0 / 0.0)); // True 

但是,当使用object.Equals时,两个NaN值相等:


Console.WriteLine (object.Equals (0.0 / 0.0, double.NaN)); // True 


双十进制

double 可用于科学计算。decimal 对于财务计算很有用。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号