2014年8月29日 星期五

無條件捨去至小數兩位並補足位數

 (Math.Truncate(the_rate*100)/100).ToString().PadRight(4,'0');

幾種四捨五入的差別如下,主要是在負數會有差異
-3        -2        -1         0         1         2         3
 +--|------+---------+----|----+--|------+----|----+-------|-+
    a                     b       c           d            e

                       a=-2.7  b=-0.5  c=0.3  d=1.5  e=2.8
                       ======  ======  =====  =====  =====
Floor                    -3      -1      0      1      2
Ceiling                  -2       0      1      2      3
Truncate                 -2       0      0      1      2
Round (ToEven)           -3       0      0      2      3
Round (AwayFromZero)     -3      -1      0      2      3

但不管哪一種都是作用到整數位
所以如果需要針對小數後兩位就需要先*100再/100

.PadRight,避免4.70變成4.7,就是一個補足位數的概念
.PadLeft是在字串左邊補0

沒有留言:

張貼留言