導航:首頁 > 編程語言 > dividejava

dividejava

發布時間:2022-09-05 15:52:00

『壹』 java做除法運算,為什麼除不開時也會得到整數呢

除法運算/的功能是有區別的。如果相除的兩個數都是整數,那麼結果也是整數,這叫做取整除法。比如,3/2,結果是1。如果其中有一個是浮點數,那麼就是浮點除法,結果是浮點數,比如,3.0/2,結果是1.5.

『貳』 Java如何實現精度控制

java中涉及到精度計算的地方,需要用到BigDecimal這個類
加減乘除如下:
add(BigDecimal augend)
subtract(BigDecimal subtrahend)
multiply(BigDecimal multiplicand)
divide(BigDecimal divisor)

『叄』 java將一個數按照規定拆分成幾個數的和

除以7必然涉及到保留兩位小數的四捨五入問題,這里使用java的BigDecimal來處理除法,四捨五入的保留方法使用RoundingMode.HALF_EVEN:

RoundingMode.CEILING:取右邊最近的整數

RoundingMode.DOWN:去掉小數部分取整,也就是正數取左邊,負數取右邊,相當於向原點靠近的方向取整

RoundingMode.FLOOR:取左邊最近的正數

RoundingMode.HALF_DOWN:五舍六入,負數先取絕對值再五舍六入再負數

RoundingMode.HALF_UP:四捨五入,負數原理同上

RoundingMode.HALF_EVEN:這個比較繞,整數位若是奇數則四捨五入,若是偶數則五舍六入

我認為無論如何都是無法避免四捨五入導致的精度變化的問題,解決方法只能在最後的結果強行再舍掉小數位數:


public class Main {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("10");
BigDecimal seven = new BigDecimal("7");

BigDecimal b1 = bigDecimal.divide(seven, 2, RoundingMode.HALF_EVEN).multiply(new BigDecimal("2"));
System.out.println(b1);
BigDecimal b2 = bigDecimal.divide(seven, 2, RoundingMode.HALF_EVEN);
System.out.println(b2);
BigDecimal b3 = bigDecimal.divide(seven, 2, RoundingMode.HALF_EVEN).multiply(new BigDecimal("2"));
System.out.println(b3);
BigDecimal b4 = bigDecimal.divide(seven, 2, RoundingMode.HALF_EVEN);
System.out.println(b4);
BigDecimal b5 = bigDecimal.divide(seven, 2, RoundingMode.HALF_EVEN);
System.out.println(b5);

System.out.println(b1.add(b2).add(b3).add(b4).add(b5).setScale(0,RoundingMode.HALF_EVEN));
}
}

『肆』 java中 BigDecimal的類型的除法

packagecn.itcast_02;

importjava.math.BigDecimal;

/*
*構造方法:
*publicBigDecimal(Stringval):
*
*金融相關的東西(例:銀行錢的小數,商品價格小數,實驗小數)
*
*成員方法:
*publicBigDecimaladd(BigDecimalaugend):加
*publicBigDecimalsubtract(BigDecimalsubtrahend):減
*publicBigDecimalmultiply(BigDecimalmultiplicand):乘
*publicBigDecimaldivide(BigDecimaldivisor):除
*publicBigDecimaldivide(BigDecimaldivisor,intscale,introundingMode):商,幾位小數,如何舍取。
*
*/
publicclassBigDecimalDemo{
publicstaticvoidmain(String[]args){
System.out.println(0.09+0.01);
System.out.println(1.0-0.32);
System.out.println(1.015*100);
System.out.println(1.301/100);

//publicBigDecimaladd(BigDecimalaugend):加
BigDecimalbd1=newBigDecimal("0.09");
BigDecimalbd2=newBigDecimal("0.01");
System.out.println("add:"+bd1.add(bd2));
System.out.println("----------------------");
//publicBigDecimalsubtract(BigDecimalsubtrahend):減
BigDecimalbd3=newBigDecimal("1.0");
BigDecimalbd4=newBigDecimal("0.32");
System.out.println("subtract:"+bd3.subtract(bd4));
System.out.println("----------------------");
//publicBigDecimalmultiply(BigDecimalmultiplicand):乘
BigDecimalbd5=newBigDecimal("1.015");
BigDecimalbd6=newBigDecimal("100");
System.out.println("multiply:"+bd5.multiply(bd6));
System.out.println("----------------------");
//publicBigDecimaldivide(BigDecimaldivisor):除
BigDecimalbd7=newBigDecimal("1.301");
BigDecimalbd8=newBigDecimal("100");
System.out.println("divide:"+bd7.divide(bd8));
System.out.println("divide:"+bd7.divide(bd8,3,BigDecimal.ROUND_HALF_UP));
System.out.println("divide:"+bd7.divide(bd8,9,BigDecimal.ROUND_HALF_UP));
}
}

『伍』 java加減乘除是什麼類

java中實現加減乘除的類是java.math.BigDecimal類. BigDecimal 類提供以下操作:算術、標度操作、舍入、比較、哈希演算法和格式轉換。

加法運算:調用BigDecimal類的add方法即可

BigDecimalb1=newBigDecimal("1");
BigDecimalb2=newBigDecimal("2");
BigDecimalresult=b1.add(b2);//加法
System.out.println(result);

減法運算:調用BigDecimal類的subtract方法即可

BigDecimalb1=newBigDecimal(3.2);
BigDecimalb2=newBigDecimal(1.6);
BigDecimalresult=b1.subtract(b2);//減法
System.out.println(result);

乘法運算:調用BigDecimal類的multiply方法即可

BigDecimalb1=newBigDecimal(9);
BigDecimalb2=newBigDecimal(8.2);
BigDecimalresult=b1.multiply(b2);//乘法
System.out.println(result);

除法運算:調用BigDecimal類的divide方法即可。

注意: 除法運算存在除不盡的情況,比如1.0/3=0.333333.. 我們需要指定小數點後面的長度,以及有效的舍入模式(例如四捨五入模式).

BigDecimalb1=newBigDecimal("1");
BigDecimalb2=newBigDecimal("3");
intscale=5;//scale指定小數點後面的位數為5位
doubleresult=b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();//除法
//BigDecimal.ROUND_HALF_UP表示四捨五入
System.out.println(result);

備註:

1:BigDecimal的構造參數有很多,但浮點類型建議轉換成字元串類型, 避免精度的丟失.

doubled1=0.001;//浮點類型
Strings1=Double.toString(d1);//轉成字元串
BigDecimalb1=newBigDecimal(s1);//使用字元串作為構造參數

2:BigDecimal類, 內存佔用比基本類型多,並且為了計算的精度,速度比double慢一點.所以,只有在需要精確計算的情況下,才使用BigDecimal類進行. 普通運算,還是多使用+-*/運算符,位運算符等.

『陸』 Java裡面BigDecimal.divide()方法能不能實現保留小數點前後共35位這樣的操作

沒有這樣的方法,你自己封裝一個就行了啊,把結果轉成35位就行了

『柒』 JAVA的加,減,乘,除運算方法

首先可以把計算器看成是一個對象就是一個類,它有加、減、乘、除功能,這四個就是這個類的方法;你可以給這個類定義兩個成員變數
int
x、int
y
然後分別用這四個方法對x
、y
實行加、減、乘、除並返回其值
代碼大概如下:
class
counter{
private
int
x;
private
int
y;
public
counter(){
}
public
counter(int
x,int
y){
this.x=x;
this.y=y;
}
public
double
adding(){
//加運算
return
x+y;
}
public
double
minus(){
//減運算
return
x-y;
}
public
double
times(){
//乘運算
return
x*y;
}
public
double
divide(){
//除運算
return
x/y;
}
}
//測試類
public
class
test{
public
static
void
main(string[]
args){
counter
c=new
counter(5,4);//實例化
system.out.println(c.adding());//輸出加的結果
system.out.println(c.minus());//輸出減的結果
system.out.println(c.times());//輸出乘的結果
system.out.println(c.divide());//輸出除的結果
}
}
希望對你有幫助

『捌』 java的加減乘除運算

使用BigDecimal並且一定要用String來夠造。
實現方法如下:

import java.math.BigDecimal;

/**

* 由於Java的簡單類型不能夠精確的對浮點數進行運算,這個工具類提供精

* 確的浮點數運算,包括加減乘除和四捨五入。

*/

public class Arith{

//默認除法運算精度

private static final int DEF_DIV_SCALE = 10;

//這個類不能實例化

private Arith(){

}

/**

* 提供精確的加法運算。

* @param v1 被加數

* @param v2 加數

* @return 兩個參數的和

*/

public static double add(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.add(b2).doubleValue();

}

/**

* 提供精確的減法運算。

* @param v1 被減數

* @param v2 減數

* @return 兩個參數的差

*/

public static double sub(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.subtract(b2).doubleValue();

}

/**

* 提供精確的乘法運算。

* @param v1 被乘數

* @param v2 乘數

* @return 兩個參數的積

*/

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();

}

/**

* 提供(相對)精確的除法運算,當發生除不盡的情況時,精確到

* 小數點以後10位,以後的數字四捨五入。

* @param v1 被除數

* @param v2 除數

* @return 兩個參數的商

*/

public static double div(double v1,double v2){

return div(v1,v2,DEF_DIV_SCALE);

}

/**

* 提供(相對)精確的除法運算。當發生除不盡的情況時,由scale參數指

* 定精度,以後的數字四捨五入。

* @param v1 被除數

* @param v2 除數

* @param scale 表示表示需要精確到小數點以後幾位。

* @return 兩個參數的商

*/

public static double div(double v1,double v2,int scale){

if(scale<0){

throw new IllegalArgumentException(

"The scale must be a positive integer or zero");

}

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

* 提供精確的小數位四捨五入處理。

* @param v 需要四捨五入的數字

* @param scale 小數點後保留幾位

* @return 四捨五入後的結果

*/

public static double round(double v,int scale){

if(scale<0){

throw new IllegalArgumentException(

"The scale must be a positive integer or zero");

}

BigDecimal b = new BigDecimal(Double.toString(v));

BigDecimal one = new BigDecimal("1");

return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

};

『玖』 java divide函數原理

java divide函數BigDecimal 的加減乘除
BigDecimal bignum1 = new BigDecimal("10");

BigDecimal bignum2 = new BigDecimal("5");

BigDecimal bignum3 = null;

//加法

bignum3 = bignum1.add(bignum2);

System.out.println("和 是:" + bignum3);

//減法

bignum3 = bignum1.subtract(bignum2);

System.out.println("差 是:" + bignum3);

//乘法
bignum3 = bignum1.multiply(bignum2);
System.out.println("積 是:" + bignum3);

//除法

bignum3 = bignum1.divide(bignum2);

System.out.println("商 是:" + bignum3);

『拾』 java的BIgInteger類中divideAndRemainder方法怎麼用

Java的BigInteger類中divideAndRemainder方法的用法是,先建一個BigInteger的對象a作為被除數,然後建一個BigInteger的對象b作為除數,

然後調用BigInteger類中divideAndRemainder方法,它返回一個包含兩個BigInteger對象(一個是商一個是余數)的數組c,

最後用BigInteger類的toString()方法把它們列印出來.

BigInteger類中divideAndRemainder方法的底層原理是二進制補碼的除法.你可以搜"二進制補碼的除法"得到結果.

完整的例子如下

import java.math.BigInteger;

public class F {

public static void main(String[] args) {

BigInteger a=new BigInteger("123456789012345");

BigInteger b=new BigInteger("9876543210");

BigInteger[] c=a.divideAndRemainder(b);

System.out.print(a.toString()+"除以"+b.toString()+"的商是");

System.out.println(c[0].toString()+",余數是"+c[1].toString());

}

}

閱讀全文

與dividejava相關的資料

熱點內容
體重小本app怎麼樣 瀏覽:776
編程語言需求 瀏覽:935
當兵體重怎麼個演算法 瀏覽:169
加密的電腦文件帶出去怎麼打開 瀏覽:849
死循環會在編譯的時候出錯嗎 瀏覽:986
c51單片機特殊寄存器的原理 瀏覽:578
閃耀永恆特利加密鑰 瀏覽:761
如何誇程序員 瀏覽:778
天津期貨python招聘 瀏覽:265
單片機機器語言寫的程序 瀏覽:552
韓國直播軟體app叫什麼名 瀏覽:918
軍營訓練不聽教官的命令 瀏覽:262
v開頭的音樂播放器是什麼APP 瀏覽:120
單片機是怎麼做出來的 瀏覽:317
博圖怎麼作為opc伺服器 瀏覽:102
編譯做題軟體 瀏覽:296
橋梁檢測pdf 瀏覽:688
化解壓力的一種方法 瀏覽:684
路由器和DSN伺服器有什麼區別 瀏覽:551
android伸縮控制項 瀏覽:861