就差一点点-微妙的强制类型转换
生活随笔
收集整理的這篇文章主要介紹了
就差一点点-微妙的强制类型转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天在寫UnitTest時發現有個測試死活通不過。
其中語句的關鍵代碼是這樣的:
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)對于這兩種強制類型轉換內部處理有何差異呢?
第一種強制類型轉換的結果為什么不對?我還沒有很明確的答案,有誰知道?
轉載于:https://www.cnblogs.com/jonnyyu/archive/2005/07/20/196691.html
總結
以上是生活随笔為你收集整理的就差一点点-微妙的强制类型转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android开发学习之路-环境搭建
- 下一篇: 成为程序员ing日记