浮點型別的特殊性知多少

2022-02-11 00:02:36 字數 624 閱讀 9472

浮點型別float和double有一些特殊性,比如他們處理精度的方式,在比較兩個值是否相等時,浮點型別的不準確性可能會造成非常嚴重的後果。有時候本來應該是相等值,最後一比較卻別的不想等了。

一次很簡單的賦值可能就會將引發精度問題,比如double number=140.6f。由於double能容納的比float更加精確的值,所以c#編譯器實際上會將這個表示式解釋成double number=140.600 0061 0351 6。而這個值作為乙個float確實是140.6,但表示成乙個double的時候,並不能準確度地等於140.6

static

void testmethod1()

為了避免浮點型別的不準確性而造成的非預期的結果,開發者應該避免使用這些型別來構建相等性條件。相反,相等性條件應該包含乙個容差,為此,乙個簡單的辦法就是用乙個值減去另乙個值,然後計算結果的絕對值是否小於最大容差。另外,更好的方案是使用decimal型別,而不是浮點型別。

另外,浮點型別還有其他的一些特殊性質,例如,乙個整數除以零理論上應該是錯誤的。這對於精確型別的int,decimal這一點都是成立的。然而對於浮點型別float和double允許一些特殊值,例如:

float f=0f;

system.console.write(f/0);

Flash的特殊性

flash並不是我們想的那是是random accessed.對其進行寫入資料和讀取資料都是得按照一定的規則。比較明顯的一點就是必須先erase再program。否則會產生exception。一般情況下,也就是意味著只有原來的資料是0x.ffff.時才能對其進行程式設計。經過實測,成功。按照一定的規...

ShellExecute使用的特殊性

我這裡想說的是我在使用中遇到的乙個情況 大家都知道,很多程式是安裝到c program files目錄下的,而一般的dos命令,預設空格後面就是要執行的引數。shellexecute中如果使用了絕對路徑,也會出現這個問題。那麼,當如果使用了絕對路徑的時候,如果是執行c program files這樣...

CSS的特殊性 specificity

css的特殊性是非常重要卻又經常被忽視的屬性,特別是在團隊合作下的產品迭代開發中,因為不注重css的特殊性最後導致某些 混亂不堪,這裡就把自己對css特殊性的認識做一些歸納總結.css的特殊性 specificity 也可以稱為css的優先順序或權值 對於每個樣式表規則,瀏覽器都會計算選擇器的特殊性...