程式中關於浮點數計算的問題

2022-08-22 10:09:10 字數 627 閱讀 6808

在進行數值計算程式設計的過程中往往需要用到浮點數的計算,但浮點數的加減運算通常是會出現誤差的。具體出現問題**如下:

double begin = 0.0; //起始位置

double end = 20.0;  //結束位置

int k = 2;  //核函式支援半徑的倍數

double initialdis = 0.1;   //粒子間的初始距離(需要與粒子的控制體積儲存一致性)

/*****************第一步初始化粒子**********/

for(double i=begin-(2*k-1)*initialdis/2; i<=end+(2*k)*initialdis/2; i=i+initialdis)

else if(i>end)//outmirror粒子

else

(*par).next = (*totalpar).next;//頭插法插入鍊錶

(*totalpar).next = par;

}如上述**所示,在計算粒子的位置時需要進行浮點數的計算,但經過若干次加法計算,結果並不能和預期相同,inlet粒子的位置應為0.0,實際計算中,是通過0.1相加出來的,並不等於0.0,所以判斷粒子為inlet粒子的條件根據具體的情況修改為(i>=begin&&i

關於浮點數計算不准的問題

1 include 2 intmain 3view code 上面的 乙個j 2,乙個,i 3,這說明了使用浮點數不注意很容易出錯,浮點數存在精度問題,因為浮點數不能準確的儲存只能用最接近的,所以要麼給其加乙個精度 define eps 0.000001 要麼用double.如float 4位元組 ...

浮點數計算

bigdecimal工具類封裝 public class bigdecimaltool 提供精確的減法運算。param v1 被減數 param v2 減數 return 兩個引數的差 public static double sub double v1,double v2 public stati...

關於浮點數

oi acm中經常要用到小數來解決問題 概率 計算幾何等 但是小數在計算機中的儲存方式是浮點數而不是我們在作數 算中的數,有精度的限制。以下以gun c 為準,其他語言 或編譯器 也差不了多少。本文競賽向。一 基礎篇 1 一般浮點數使用double,範圍為大概為 10 308 10 308,有效精度...