我有下面的代碼示例:轉換浮到小數,錯誤地失去精度
float val = 16777216.0F;
var badResult = Convert.ToDecimal(val);
//badResult has value 16777220
這是爲什麼呢精密失去了什麼?指定的值是2^24,這是float可以表示的值。是否有任何.net庫可用於使此轉換正常工作,而無需推出自己的iCustomFormatter?
謝謝!
編輯,這是難看的代碼我用作溶液
var goodResult = Convert.ToDecimal(((double)val));
如果你在使用數學,一路使用浮動/雙打。如果您使用貨幣,則一路使用小數。爲什麼你需要在它們之間進行轉換? – 2012-03-26 15:58:13
另請參閱http://ideone.com/w1sTm – 2012-03-26 16:00:44
@graham。不幸的是,我正在從硬件返回代碼。 – greggorob64 2012-03-26 17:24:28