java int double 加减法 基本类型运算问题
发布时间:2025-05-22 00:01:20 发布人:远客网络
一、java int double 加减法 基本类型运算问题
1.-2.8421709430404007E-14表示-2.8421709430404007乘以10的-14次方,计算机能准确表示十进制的整数,但不能准确表示十进制小数。System.out.println(150.0+0+183.28-0-183.28-150.0);150.0+0+183.28-0-183.28-150.0的结果为0.00000000000...,只不过你的输出结果为double型,精度比较高,没有超出打印函数(println之类的)的默认精度而已。
2.System.out.println(((150.00)+0.00+(183.28))-(0.00+(183.28)+(150.00)));中将((150.00)+0.00+(183.28))作为个运算单元,二个括号内的运算的结果肯定一样,与精度无关。结果当然为0。
3.用System.out.println((long)(150.0+0+183.28-0-183.28-150.0));(150.0+0+183.28-0-183.28-150.0)的结果为0.00000000...,转换成long,舍弃小数位,结果自然为0;
4.System.out.println(150.0F+0+183.28F-0-183.28F-150.0F);运算结果为float型,超出打印函数(println之类的)的默认精度,截取下来为0。
二、Java实现有界面的简单的两个整数之间的加减乘除运算
这个必须通过swing技术实现,先看下效果图:
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.SwingConstants;
publicclassJisuanqiextendsJFrameimplementsActionListener{
privatestaticfinallongserialVersionUID=1L;
Resultresult=newResult();//定义text的面板
Number_Keynumber_key=newNumber_Key();//定义按钮面板
//当点击按钮+、-、*、/时,com=true
//当i=0时说明是我们第一次输入,字符串text不会累加
//存放点击按钮+、-、*、/之前的数值
//+、-、*、/的代号分别为1,2,3,4
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设定关闭窗体时退出程序
JPanelpane=newJPanel();//定义主面板
pane.setLayout(newBorderLayout());
setBounds(380,220,30,80);//前两个参数是在屏幕上显示的坐标,后两个是大小
ImageIconicon=newImageIcon("F:1.GIF");
//Jisuanqi.class.getResource("APPLE.GIF")
setIconImage(icon.getImage());
pane.add(result,BorderLayout.NORTH);
pane.add(number_key,BorderLayout.CENTER);
pane.add(number_key.equal,BorderLayout.SOUTH);
number_key.one.addActionListener(this);//对1按钮添加监听事件
number_key.two.addActionListener(this);//对2按钮添加监听事件
number_key.three.addActionListener(this);//对3按钮添加监听事件
number_key.four.addActionListener(this);//对4按钮添加监听事件
number_key.five.addActionListener(this);//对5按钮添加监听事件
number_key.six.addActionListener(this);//对6按钮添加监听事件
number_key.seven.addActionListener(this);//对7按钮添加监听事件
number_key.eight.addActionListener(this);//对8按钮添加监听事件
number_key.nine.addActionListener(this);//对9按钮添加监听事件
number_key.zero.addActionListener(this);//对0按钮添加监听事件
number_key.ce.addActionListener(this);//对置零按钮添加监听事件
number_key.plus.addActionListener(this);//对+按钮添加监听事件
number_key.equal.addActionListener(this);//对=按钮添加监听事件
number_key.sub.addActionListener(this);//对-按钮添加监听事件
number_key.mul.addActionListener(this);//对*按钮添加监听事件
number_key.div.addActionListener(this);//对/按钮添加监听事件
number_key.point.addActionListener(this);//对.按钮添加监听事件
pack();//初始化窗体大小为正好盛放所有按钮
publicvoidactionPerformed(ActionEvente){
*如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、=,如果是那么com=true如果没有com=
*false;或者是否点击数字键,如果是i=1,如果没有i=0;
if(e.getSource()==number_key.one){
result.text.setText(text+"1");
}elseif(e.getSource()==number_key.two){
result.text.setText(text+"2");
}elseif(e.getSource()==number_key.three){
result.text.setText(text+"3");
}elseif(e.getSource()==number_key.four){
result.text.setText(text+"4");
}elseif(e.getSource()==number_key.five){
result.text.setText(text+"5");
}elseif(e.getSource()==number_key.six){
result.text.setText(text+"6");
}elseif(e.getSource()==number_key.seven){
result.text.setText(text+"7");
}elseif(e.getSource()==number_key.eight){
result.text.setText(text+"8");
}elseif(e.getSource()==number_key.nine){
result.text.setText(text+"9");
*对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是
*如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添加0;否则保持原来的数值不变
elseif(e.getSource()==number_key.zero){//result.text.getText()是得到text里内容的意思
if(Float.parseFloat(text)>0||Float.parseFloat(text)<0){//Float.parseFloat(text)就是类型转换了,下面都是一样
result.text.setText(text+"0");
if(text.trim().indexOf(".")==-1){
result.text.setText(text+"0");
}elseif(e.getSource()==number_key.ce){
*本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加,不存在就添加.
elseif(e.getSource()==number_key.point){
if(text.trim().indexOf(".")==-1){
result.text.setText(text+".");
elseif(e.getSource()==number_key.plus){
defbutton=Double.parseDouble(result.text.getText());
elseif(e.getSource()==number_key.sub){
defbutton=Double.parseDouble(result.text.getText());
elseif(e.getSource()==number_key.mul){
defbutton=Double.parseDouble(result.text.getText());
System.out.println(defbutton);
elseif(e.getSource()==number_key.div){
defbutton=Double.parseDouble(result.text.getText());
}elseif(e.getSource()==number_key.equal){
+Double.parseDouble(result.text.getText());
-Double.parseDouble(result.text.getText());
result.text.setText(String.valueOf(ad));
*Double.parseDouble(result.text.getText());
/Double.parseDouble(result.text.getText());
System.out.println(result.text.getText());
@SuppressWarnings("deprecation")
publicstaticvoidmain(String[]args){
Jisuanqiloveyou=newJisuanqi();
privatestaticfinallongserialVersionUID=1L;
JButtonzero=newJButton("0");//数字键0
JButtonone=newJButton("1");//数字键1
JButtontwo=newJButton("2");//数字键2
JButtonthree=newJButton("3");//数字键3
JButtonfour=newJButton("4");//数字键4
JButtonfive=newJButton("5");//数字键5
JButtonsix=newJButton("6");//数字键6
JButtonseven=newJButton("7");//数字键7
JButtoneight=newJButton("8");//数字键8
JButtonnine=newJButton("9");//数字键9
JButtonce=newJButton("清零");//置零键
setLayout(newGridLayout(4,4,1,1));//定义布局管理器为网格布局
setBackground(Color.blue);//设置背景颜色
privatestaticfinallongserialVersionUID=1L;
JTextFieldtext=newJTextField("0");
@SuppressWarnings("deprecation")
Result(){//讲输入的数字或得到的结果在text的右边显示
text.setHorizontalAlignment(SwingConstants.RIGHT);
text.enable(false);//文本框不能编辑
setLayout(newBorderLayout());//设定布局管理器边框布局
add(text,BorderLayout.CENTER);//text放置在窗体的中间
三、Java中数字的加减乘除 BigDecimal
在Java中处理精度问题时,BigDecimal显得尤为关键。通过使用BigDecimal,开发者能够实现精确的加减乘除运算,避免了浮点数运算中常见的精度损失。
初始化BigDecimal实例时,可以使用多种构造函数。例如,通过整数初始化:BigDecimal bigDecimal= new BigDecimal(1);,通过小数初始化:BigDecimal bigDecimal= new BigDecimal(1.222);。
进行运算时,BigDecimal提供了丰富的方法。加法使用add()函数,减法使用subtract()函数,乘法使用multiply()函数,除法使用divide()函数。例如,将两个BigDecimal实例相加:bigDecimal= bigDecimal.add(bigDecimal);。
对于更复杂的运算,如将一个数与自身相加后再四舍五入保留两位小数,可以使用setScale()方法。如以下代码所示:
bigDecimal= bigDecimal.add(bigDecimal).setScale(2,BigDecimal.ROUND_UP);。这里,setScale(2,BigDecimal.ROUND_UP)用于格式化小数点,确保结果保留两位,并对末位进行进位处理。
通过这些方法,开发者能够实现精确的数值计算,适用于金融、科学计算等对精度有高要求的场景。