日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java浮点数计算程序_计算器程序.可以准确进行浮点数运算

發布時間:2024/1/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java浮点数计算程序_计算器程序.可以准确进行浮点数运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//小弟剛學java,程序中寫的不妥的地方還望高手們指教,同樣的菜鳥們共同學習

//因為布局管理器都還沒看,所以不知道有什么好布局可用,就干脆null,setbounds了,麻煩

//不過很簡單

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.math.*;

public class MyCal

{

public static void main(String args[])

{

new MyFrame();

}

}

class MyFrame extends Frame

implements ActionListener

//這是自定義的界面窗口類,同時也監聽器

{ ? ? ? ? //下面定義將用到的17個button和1個textfield

double num1=0,num2=0,result;

int fuhao=0;

boolean ready=true;

//ready表示重新輸數。有了這個標志,上次運算結果仍然顯示在textfield上,

//直接按數字鍵不會跟在上次結果后面,而可以不按C就直接進行下次運算。

Button b1=new Button("1");

Button b2=new Button("2");

Button b3=new Button("3");

Button b4=new Button("4");

Button b5=new Button("5");

Button b6=new Button("6");

Button b7=new Button("7");

Button b8=new Button("8");

Button b9=new Button("9");

Button b0=new Button("0");

Button bp=new Button("."); ? ?//p,小數點

Button be=new Button("="); ? ?//e,=號

Button bchu=new Button("/");

Button bcheng=new Button("*");

Button bjian=new Button("-");

Button bjia=new Button("+");

Button bc=new Button("c");

JTextField tf=new JTextField();

MyFrame()

{ ? //構造方法,初始化,把button和textfield添加到frame上。

//并注冊事件監聽

tf.setBounds(40,60,200,20);

tf.setEditable(false);

tf.setHorizontalAlignment(JTextField.RIGHT);

b1.setBounds(40,100,40,20);

b2.setBounds(100,100,40,20);

b3.setBounds(160,100,40,20);

bchu.setBounds(220,100,40,20);

b4.setBounds(40,140,40,20);

b5.setBounds(100,140,40,20);

b6.setBounds(160,140,40,20);

bcheng.setBounds(220,140,40,20);

b7.setBounds(40,180,40,20);

b8.setBounds(100,180,40,20);

b9.setBounds(160,180,40,20);

bjia.setBounds(220,180,40,20);

b0.setBounds(40,220,40,20);

bp.setBounds(100,220,40,20);

be.setBounds(160,220,40,20);

bjian.setBounds(220,220,40,20);

bc.setBounds(280,100,40,20);

this.setLayout(null);

this.setBounds(300,250,360,280);

this.setResizable(false);

this.settitle("我的計算器");

this.add(b1);

this.add(b2);

this.add(b3);

this.add(b4);

this.add(b5);

this.add(b6);

this.add(b7);

this.add(b8);

this.add(b9);

this.add(b0);

this.add(bp);

this.add(be);

this.add(bchu);

this.add(bcheng);

this.add(bjian);

this.add(bjia);

this.add(bc);

this.add(tf);

this.setVisible(true);

this.addWindowListener(new ClzMain());

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

b5.addActionListener(this);

b6.addActionListener(this);

b7.addActionListener(this);

b8.addActionListener(this);

b9.addActionListener(this);

b0.addActionListener(this);

bp.addActionListener(this);

be.addActionListener(this);

bjia.addActionListener(this);

bjian.addActionListener(this);

bcheng.addActionListener(this);

bchu.addActionListener(this);

bc.addActionListener(this);

}

public void actionPerformed(ActionEvent e)

{

//因這個類是監聽器,所以必須有這個方法。

if(e.getSource()==b1)

{

if(ready)

{tf.setText("1");ready=false;}

else

tf.setText(tf.getText()+"1");

}

if(e.getSource()==b2)

{

if(ready)

{tf.setText("2");ready=false;}

else

tf.setText(tf.getText()+"2");

}

if(e.getSource()==b3)

{

if(ready)

{tf.setText("3");ready=false;}

else

tf.setText(tf.getText()+"3");

}

if(e.getSource()==b4)

{

if(ready)

{tf.setText("4");ready=false;}

else

tf.setText(tf.getText()+"4");

}

if(e.getSource()==b5)

{

if(ready)

{tf.setText("5");ready=false;}

else

tf.setText(tf.getText()+"5");

}

if(e.getSource()==b6)

{

if(ready)

{tf.setText("6");ready=false;}

else

tf.setText(tf.getText()+"6");

}

if(e.getSource()==b7)

{

if(ready)

{tf.setText("7");ready=false;}

else

tf.setText(tf.getText()+"7");

}

if(e.getSource()==b8)

{

if(ready)

{tf.setText("8");ready=false;}

else

tf.setText(tf.getText()+"8");

}

if(e.getSource()==b9)

{

if(ready)

{tf.setText("9");ready=false;}

else

tf.setText(tf.getText()+"9");

}

if(e.getSource()==b0)

{

if(ready)

{tf.setText("0");ready=false;}

else

tf.setText(tf.getText()+"0");

}

if(e.getSource()==bp)

{

if(ready)

{tf.setText("0.");ready=false;}

else

tf.setText(tf.getText()+".");

}

if(e.getSource()==bc)

{

fuhao=0;num1=num2=result=0;ready=true;tf.setText("");

}

if(e.getSource()==bjia)

{

fuhao=1;ready=true;

num1=Double.valueOf(tf.getText()).doubleValue();

System.out.println("num1="+num1);

tf.setText("");

}

if(e.getSource()==bjian)

{

fuhao=2;ready=true;

num1=Double.valueOf(tf.getText()).doubleValue();

System.out.println("num1="+num1);

tf.setText("");

}

if(e.getSource()==bcheng)

{

fuhao=3;ready=true;

num1=Double.valueOf(tf.getText()).doubleValue();

System.out.println("num1="+num1);

tf.setText("");

}

if(e.getSource()==bchu)

{

fuhao=4;ready=true;

num1=Double.valueOf(tf.getText()).doubleValue();

System.out.println("num1="+num1);

tf.setText("");

}

if(e.getSource()==be)

{

if(fuhao!=0)

{

num2=Double.valueOf(tf.getText()).doubleValue();

System.out.println("num2="+num2);

if(fuhao==1)

result=add(num1,num2);

if(fuhao==2)

result=sub(num1,num2);

if(fuhao==3)

result=mul(num1,num2);

if(fuhao==4)

result=div(num1,num2,10);

System.out.println("result="+result);

//解決.0的問題 如果以".0"結尾,就取子串,把.0去掉。

if(String.valueOf(result).endsWith(".0"))

tf.setText(String.valueOf(result).substring(0,String.valueOf(result).length()-2));

else tf.setText(String.valueOf(result));

ready=true;fuhao=0;

}

}

}

//浮點數四則運算必須用下面四個方法,如果直接進行運算會出錯。

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

}

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

}

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

}

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

{

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

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

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

}

}

class ClzMain extends WindowAdapter

{

public void windowClosing(WindowEvent e)

{

e.getWindow().dispose();

System.exit(0);

}

}

總結

以上是生活随笔為你收集整理的java浮点数计算程序_计算器程序.可以准确进行浮点数运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。