使用BigDecimal并且一定要用String來夠造。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)玄武免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
實(shí)現(xiàn)方法如下:
import java.math.BigDecimal;
/**
* 由于Java的簡(jiǎn)單類型不能夠精確的對(duì)浮點(diǎn)數(shù)進(jìn)行運(yùn)算,這個(gè)工具類提供精
* 確的浮點(diǎn)數(shù)運(yùn)算,包括加減乘除和四舍五入。
*/
public class Arith{
//默認(rèn)除法運(yùn)算精度
private static final int DEF_DIV_SCALE = 10;
//這個(gè)類不能實(shí)例化
private Arith(){
}
/**
* 提供精確的加法運(yùn)算。
* @param v1 被加數(shù)
* @param v2 加數(shù)
* @return 兩個(gè)參數(shù)的和
*/
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();
}
/**
* 提供精確的減法運(yùn)算。
* @param v1 被減數(shù)
* @param v2 減數(shù)
* @return 兩個(gè)參數(shù)的差
*/
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();
}
/**
* 提供精確的乘法運(yùn)算。
* @param v1 被乘數(shù)
* @param v2 乘數(shù)
* @return 兩個(gè)參數(shù)的積
*/
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();
}
/**
* 提供(相對(duì))精確的除法運(yùn)算,當(dāng)發(fā)生除不盡的情況時(shí),精確到
* 小數(shù)點(diǎn)以后10位,以后的數(shù)字四舍五入。
* @param v1 被除數(shù)
* @param v2 除數(shù)
* @return 兩個(gè)參數(shù)的商
*/
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
/**
* 提供(相對(duì))精確的除法運(yùn)算。當(dāng)發(fā)生除不盡的情況時(shí),由scale參數(shù)指
* 定精度,以后的數(shù)字四舍五入。
* @param v1 被除數(shù)
* @param v2 除數(shù)
* @param scale 表示表示需要精確到小數(shù)點(diǎn)以后幾位。
* @return 兩個(gè)參數(shù)的商
*/
public static double div(double v1,double v2,int scale){
if(scale0){
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();
}
/**
* 提供精確的小數(shù)位四舍五入處理。
* @param v 需要四舍五入的數(shù)字
* @param scale 小數(shù)點(diǎn)后保留幾位
* @return 四舍五入后的結(jié)果
*/
public static double round(double v,int scale){
if(scale0){
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();
}
};
如果你想要帶小數(shù)的結(jié)果那么在聲明的時(shí)候就要把變量聲明成浮點(diǎn)型
float = 0.0f
double = 0.0
補(bǔ)充
因?yàn)槟懵暶鞯?和2都是int型的變量,所以計(jì)算出來的結(jié)果也是int型的,int型是整型變量,沒有小數(shù)部分,所以要把它們聲明成浮點(diǎn)數(shù)(即小數(shù)),例如float=5.0f;float = 2.0f;后邊的f表示2.0是float型的單精度浮點(diǎn)數(shù),如果不帶f則是默認(rèn)的double型雙精度浮點(diǎn)數(shù)。兩個(gè)float型的數(shù)字相除,這樣計(jì)算的結(jié)果也使float型的,所以就會(huì)有小數(shù)部分出現(xiàn)了
java編程實(shí)現(xiàn)分?jǐn)?shù)的加減乘除運(yùn)算的步驟如下:
1、打開eclipse,創(chuàng)建一個(gè)Java工程,在此工程里新建一個(gè)類;
2、在新建的類中,添加4個(gè)運(yùn)算類;
3、在主方法中調(diào)用對(duì)應(yīng)的方法即可完成分?jǐn)?shù)的加減乘除運(yùn)算了。
具體實(shí)現(xiàn)代碼如下:
public?class?Demo?{
public?static?void?main(String[]?args)?{
System.out.println(jia(1,?2));
System.out.println(jian(1,?2));
System.out.println(cheng(1,?2));
System.out.println(chu(1,?2));
}
//加法運(yùn)算
private?static?float?jia(float?x,float?y)?{
return?x?+?y;
}
//減法運(yùn)算
private?static?float?jian(float?x,float?y)?{
return?x?-?y;
}
//乘法運(yùn)算
private?static?float?cheng(float?x,float?y)?{
return?x?*?y;
}
//除法運(yùn)算
private?static?float?chu(float?x,float?y)?{
return?x?/?y;
}
}
java中字符串的相等,請(qǐng)不要用==號(hào),應(yīng)該改成s.equals("==")
else
if(s=="退格"){
a=a/10;
}
這個(gè)方法不太好,比如我輸入1,再退格,應(yīng)該等于0.1嗎?
首先可以把計(jì)算器看成是一個(gè)對(duì)象就是一個(gè)類,它有加、減、乘、除功能,這四個(gè)就是這個(gè)類的方法;你可以給這個(gè)類定義兩個(gè)成員變量
int
x、int
y
然后分別用這四個(gè)方法對(duì)x
、y
實(shí)行加、減、乘、除并返回其值
代碼大概如下:
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(){
//加運(yùn)算
return
x+y;
}
public
double
minus(){
//減運(yùn)算
return
x-y;
}
public
double
times(){
//乘運(yùn)算
return
x*y;
}
public
double
divide(){
//除運(yùn)算
return
x/y;
}
}
//測(cè)試類
public
class
test{
public
static
void
main(string[]
args){
counter
c=new
counter(5,4);//實(shí)例化
system.out.println(c.adding());//輸出加的結(jié)果
system.out.println(c.minus());//輸出減的結(jié)果
system.out.println(c.times());//輸出乘的結(jié)果
system.out.println(c.divide());//輸出除的結(jié)果
}
}
希望對(duì)你有幫助
分享文章:java代碼除法運(yùn)算法則 java 位運(yùn)算實(shí)現(xiàn)除法
網(wǎng)頁(yè)網(wǎng)址:http://www.yijiale78.com/article42/dooeeec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、定制開發(fā)、網(wǎng)站內(nèi)鏈、服務(wù)器托管、網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)