javadouble乘
① java double b = 0.333 , 乘以100 以後小數位變多;
double 是雙精度類型,也就是說你的d是double,而你的d*100中的100是整形(int)。這是自動類型轉換
符合以下條件時java將會做自動類型轉換:
(1)轉換前的數據類型與轉換後的類型兼容。
(2)轉換後的數據類型的表示範圍比轉換前的類型大。
其中double的表示範圍比int大,符合條件(2)。因此java會自動將原來為int的類型的變數100轉換為double類型。
② java中的double計算為何3乘100.1等於300.29999999......
這是浮點計算誤差,因為計算機內表示浮點的精度是有限的。
③ java里當兩個double型數據相乘的輸出怎麼像c++那樣
public static void main(String[] args) {
double a=1.1;
a=a*a;
System.out.println( a );
System.out.println(String.format("%4.4f", a));
}
④ java中兩個double相乘後面多了好多位
double 類型運算會出現精度問題
要先轉換為字元串,後進行運算,可以寫個方法做乘法運算
public static double mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
加法: return b1.add(b2).doubleValue();
減法: return b1.subtract(b2).doubleValue();
⑤ java double型乘法的問題
java的double類以IEEE754標准儲存,是二進制的形式。十進制小數轉化成二進制會有一定的誤差。
問題怎麼解決取決於你的需求。如果只是求大小,0.09000000000000001和0.09也沒啥區別。如果有格式需求,或者需要絕對正確,可用java.math.BigDecimal。
⑥ java裡面double 做乘法和加法會丟失精度嘛
publicBigDecimal(doubleval)
thedouble'sbinary
floating-pointvalue.
smallestvaluesuchthat(10scale×val)isaninteger.
Notes:
Parameters:
val-doublevaluetobeconvertedto
BigDecimal.
Throws:
NumberFormatException-ifvalisinfiniteorNaN.
.Onemight
(0.1)inJavacreatesa
.1(anunscaledvalueof1,
withascaleof1),butitisactuallyequalto
0..Thisisbecause0.1
(or,forthatmatter,as
).Thus,thevaluethatisbeingpassed
.1,appearances
notwithstanding.
TheStringconstructor,ontheotherhand,isperfectly
predictable:writingnewBigDecimal("0.1")createsa
.1,asonewould
expect.Therefore,isone.
BigDecimal,
conversion;
doubletoaStringusingtheDouble.toString(double)(String)constructor.Togetthatresult,usethestaticvalueOf(double)method.
這是java.math.BigDecimal類的其中一個構造器的介紹。好好看,格式好像亂了。。傳圖一直傳不上去,不造是為啥。。。。
⑦ java中double * 運算的問題
如果要求精確的答案,請不要使用float和double,因為它們是為了在廣域數值范圍上提供較為精確的快速近似運算而精心設計的。然而,它們沒有提供完全精確的結果。尤其是對貨幣計算尤為不適合另外不要嘗試1.0-1=0去做判斷,這是不精確的,要用<0或者>0數據類型總結中已經寫了浮點數的精度只適用於工程計算等領域浮點數據類型的精度依賴於具體的晶元
⑧ Java中 兩個double型數字相乘的問題,想不明白是怎麼回事
java 中的浮點數運算會出現精度丟失的結果 這是因為他們運算的時候是轉換成2進制運算的 所以得到的結果太大 無法表示造成的 避免這種結果的話 就要用LS那位的方法了
⑨ java中兩個double數字相乘的結果
java裡面double和float類型是非精確數字類型,存在一定的誤差,誤差值具有隨機性,如果要精確計算的,盡量避免用double和float
⑩ java中如何算double類型的乘法
java中dobule類型的運算方法與int和float的一樣。
代碼示例:
double s1=0.23;
dobule s2=5.2;
dobule s3=s1*s2;
相關知識:java的運算方法和運算符。
加+,減-,乘以*,除以/,取余%。java的運算方式也是遵守先乘除後加減,有括弧先算括弧里的運算方式。