[C#] Decimal ToString 輸出

  • 949
  • 0
  • 2016-03-23

Decimal ToString 輸出

越簡單的東西越需要小心

decimal a = 0m;
decimal b = 0.0m;

Console.WriteLine(a == b);
Console.WriteLine(a.ToString() == b.ToString());

a = 1.56m;
Console.WriteLine(a.ToString("0.0"));

a = 123456.789m;
Console.WriteLine(a.ToString("0.0"));
Console.WriteLine(a.ToString("0,0.00"));

請問輸出結果是什麼

True

False

1.6

123456.8

123,456.79

 

原先我預期它只輸出到小數點第 N 位,但卻忽略掉四捨五入 N+1 位行為

在此筆記一下

另外,如果讓整數(例如 8m) ToString 時輸出至小數點一位

也可用以下寫法

decimal c = 8m;
Console.WriteLine(c.ToString()); // output: "8"
c += 0.0m;
Console.WriteLine(c.ToString()); // output: "8.0"