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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

浮點(diǎn)數(shù)學(xué)在C#中是一致的嗎?可以嗎?

浮點(diǎn)數(shù)學(xué)在C#中是一致的嗎?可以嗎?

繁星淼淼 2019-07-19 18:54:03
浮點(diǎn)數(shù)學(xué)在C#中是一致的嗎?可以嗎?不,這不是另一個(gè)“為什么(1/3.0)*3!=1”問題。最近我讀了很多關(guān)于浮點(diǎn)數(shù)的文章,特別是,相同的計(jì)算可能會(huì)給出不同的結(jié)果。在不同的架構(gòu)或優(yōu)化設(shè)置上。對(duì)于存儲(chǔ)重播的電子游戲來說,這是一個(gè)問題。點(diǎn)對(duì)點(diǎn)聯(lián)網(wǎng)(相對(duì)于服務(wù)器-客戶機(jī)),每次運(yùn)行程序時(shí),所有客戶端都會(huì)產(chǎn)生完全相同的結(jié)果-一個(gè)浮點(diǎn)計(jì)算中的微小差異可能會(huì)導(dǎo)致不同機(jī)器上的游戲狀態(tài)(甚至是完全不同的游戲狀態(tài))。在同一臺(tái)機(jī)器上!)即使在“跟隨”處理器中也會(huì)發(fā)生這種情況。IEEE-754,主要是因?yàn)橐恍┨幚砥?即x86)使用雙擴(kuò)展精度..也就是說,他們使用80位寄存器來做所有的計(jì)算,然后截?cái)嗟?4位或32位,導(dǎo)致與使用64位或32位的機(jī)器不同的四舍五入結(jié)果。我在網(wǎng)上看到了幾種解決這個(gè)問題的方法,但都是針對(duì)C+的,而不是C#:禁用雙擴(kuò)展精度模式(使所有double計(jì)算使用IEEE-754 64位)_controlfp_s(窗戶)_FPU_SETCW(Linux?)fpsetprec(BSD)。始終使用相同的優(yōu)化設(shè)置運(yùn)行相同的編譯器,并要求所有用戶具有相同的CPU架構(gòu)(沒有跨平臺(tái)播放)。因?yàn)槲业摹熬幾g器”實(shí)際上是JIT,它每次運(yùn)行程序時(shí)都可能以不同的方式進(jìn)行優(yōu)化。我不認(rèn)為這是可能的。使用定點(diǎn)算法,避免float和double總之。decimal將為此目的工作,但速度要慢得多,而且沒有一個(gè)System.Math圖書館功能支持它。所以,這在C#中是一個(gè)問題嗎?如果我只打算支持Windows(而不是Mono)呢?如果是的話,有沒有辦法強(qiáng)迫我的程序以正常的雙精度運(yùn)行?如果不是,有沒有圖書館能幫上忙保持浮點(diǎn)計(jì)算一致?
查看完整描述

3 回答

?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

C#規(guī)范(§4.1.6浮點(diǎn)類型)特別允許使用高于結(jié)果的精度進(jìn)行浮點(diǎn)計(jì)算。所以,不,我認(rèn)為您不能在.NET中直接使這些計(jì)算具有確定性。其他人提出了各種解決辦法,所以你可以試試。


查看完整回答
反對(duì) 回復(fù) 2019-07-19
  • 3 回答
  • 0 關(guān)注
  • 397 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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