3
有人可以解釋以下內容。我有一個接受一對float64的函數,然後使用這個值來計算很多其他值。該功能看起來像GoLang爲浮動循環創建錯誤
func (g *Geometry) CalcStresses(x, zmax, zmin float64)(Vertical)
結果被放入一個結構類似
type Vertical struct {
X float64
Stresses []Stress
}
現在有趣的事情是這樣的。如果我像這樣調用函數;
for i:=14.0; i<15.0; i+=0.1{
result := geo.CalcStresses(i, 10, -10)
}
然後我得到了很多結果,其中的壓力數組是空的,antoher有趣的細節是,X有時顯示像數與小數的很多(如14.3999999999999999998)
但是,如果我叫像這樣的功能;
for i:=0; i<10; i++{
x := 14.0 + float64(i) * 0.1
result := geo.CalcStresses(x,10,-10)
}
然後一切都很好。
有誰知道爲什麼會發生這種情況?
由於提前, 羅布
您可能會發現這些資源有所幫助:http://www.validlab.com/goldberg/paper.pdf和http://floating-point-gui.de/ – Volker
哇,謝謝沃爾克,這絕對是我可以得到的最全面的答案:-)偉大的紙,thx! – BreinBaas