C#中浮點數運算函數Floor的運算誤差或可稱BUG.
我都不敢相信,下面的計算結果居然會得不到我想要的110.
double test = Math.Floor( 11.0f /0.1f); // 結果得到 109.0
test = Math.Round( 11.0f /0.1f -0.5f); // 得到的結果也是 109.0
// 以下的結果也是 109.0
float f1 = 11.0f, f2 = 0.1f;
double m1 = (double)f1, m2 = (double)f2;
double test = Math.Floor( m1/m2 );
曾經發現 Math.Ceiling() 也有類似問題.
最後火大了,寫了一個通過轉成字符再轉回來的笨辦法(現在還不知道有沒有其他問題,待觀察, 或者是不是有其他更好辦法).
MyMath.Floor