為什麼0.1 + 0.2 不等於 0.3?為什麼16777216f 等於 16777217f?為什麼金錢計算都推薦用decimal?本文主要學習瞭解一下數字背後不為人知的存儲秘密。 ...
為什麼0.1 + 0.2
不等於 0.3
?為什麼16777216f
等於 16777217f
?為什麼金錢計算都推薦用decimal
?本文主要學習瞭解一下數字背後不為人知的存儲秘密。
01、數值類型
C#中的數字類型主要包含兩類,整數、小數,C#中的小數都為浮點(小)數。
void Main()
{
int a1 = 100;
int a2 = 0x0f; //15
var b2 = 0b11; //3
var x1 = 1; //整數值預設為int
var y1 = 1.1; //小數值預設為double
Add(1, 2.3); //3.3
Add(1, 3); //4
}
private T Add<T>(T x, T y) where T : INumber<T>
{
return x + y * x;
}
- 用
var
類型推斷時,整數值預設為int
,小數值預設為double
。 .NET 7
新增的一個專門用來約束數字類型的介面 INumber<T>
,用來約束數字類型非常好用。
數值類型大多提供的成員: