第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將結(jié)果強制轉(zhuǎn)換為float并返回float更改結(jié)果

將結(jié)果強制轉(zhuǎn)換為float并返回float更改結(jié)果

慕斯王 2019-10-09 16:04:24
為什么False在.NET 4中打印此代碼?似乎是顯式強制轉(zhuǎn)換導致某些意外行為。除了“浮點數(shù)不準確”或“不要那樣做”之外,我想要一個答案。float a(float x, float y){  return ( x * y );}float b(float x, float y){  return (float)( x * y );}void Main(){  Console.WriteLine( a( 10f, 1f/10f ) == b( 10f, 1f/10f ) );}PS:此代碼來自單元測試,而不是發(fā)布代碼。該代碼是故意以這種方式編寫的。我懷疑它最終會失敗,但是我想確切地知道何時以及為什么。答案證明了此技術(shù)的有效性,因為它提供了一種超出對浮點確定性的通常理解的理解。這就是以這種方式編寫此代碼的目的;刻意探索。PPS:單元測試在.NET 3.5中通過,但是現(xiàn)在升級到.NET 4后失敗。
查看完整描述

3 回答

?
慕田峪9158850

TA貢獻1794條經(jīng)驗 獲得超8個贊

我現(xiàn)在沒有Microsoft編譯器,Mono沒有這種效果。據(jù)我所知,GCC 4.3+使用gmp和mpfr在編譯時計算一些東西。C#編譯器可以對同一程序集中的非虛擬,靜態(tài)或私有方法執(zhí)行相同的操作。顯式強制轉(zhuǎn)換可能會干擾這種優(yōu)化(但是我看不出為什么它不能具有相同的行為)。也就是說,它可以內(nèi)聯(lián)到某種程度上計算常數(shù)表達式(b()例如,可能取決于類型轉(zhuǎn)換)。


如果有必要,GCC還具有將操作提升到更高精確度的優(yōu)化。


因此,我認為這兩種優(yōu)化都是潛在的原因。但是對于他們兩個,我都沒有理由對結(jié)果進行顯式強制轉(zhuǎn)換可能會具有一些其他含義,例如“更接近于標準”。


查看完整回答
反對 回復 2019-10-09
?
收到一只叮咚

TA貢獻1821條經(jīng)驗 獲得超5個贊

不管您想調(diào)用它是什么,都可以。就是很多人錯誤地或不完全地將此問題歸因于此。問題的重點是去了解“其他東西”。為此,需要對問題和答案進行編輯。我希望沒有人提到浮點“精度”的基礎知識,因為這個問題(正如Eric詳盡解釋的那樣)比通常所知的浮點“精度”更為復雜。這就是為什么僅對浮點“準確性”的評論仍被人們贊成的原因。

查看完整回答
反對 回復 2019-10-09
  • 3 回答
  • 0 關(guān)注
  • 597 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號