就差一点点-微妙的强制类型转换
今天在寫UnitTest時發(fā)現(xiàn)有個測試死活通不過。
其中語句的關(guān)鍵代碼是這樣的:
float scale = 0.24f;
int actualWidth = 800;
int width = (int)(actualWidth * scale);
AssertEquals(192, width);
dotUnit報錯, expected value 192, 191 was got.
但是如果這樣寫就對了。
float scale = 0.24f;
int actualWidth =? 800;
float widthf = actualWidth * scale; // 這里是192.0
int width = (int)widthf; //這樣就是192了。
最后改成了
int width = (int)(float)(actualWidth * scale);
搞定。
但是問題仍然存在,C#編譯器(.Net runtime)對于這兩種強(qiáng)制類型轉(zhuǎn)換內(nèi)部處理有何差異呢?
第一種強(qiáng)制類型轉(zhuǎn)換的結(jié)果為什么不對?我還沒有很明確的答案,有誰知道?
轉(zhuǎn)載于:https://www.cnblogs.com/jonnyyu/archive/2005/07/20/196691.html
總結(jié)
以上是生活随笔為你收集整理的就差一点点-微妙的强制类型转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android开发学习之路-环境搭建
- 下一篇: 成为程序员ing日记