Topic: 实在是受不了了,java怎么又这么多问题?

  Print this page

1.实在是受不了了,java怎么又这么多问题? Copy to clipboard
Posted by: huangfei
Posted on: 2004-08-18 14:16

double o = 64.96;
double t = 81;
double s = o + t;

结果s=145.9599999998,这些都是货币来这,只需要两位小数,怎么让它等于145.96呢?难道用四舍五入嘛?别的语言都没有这个问题啊。
java中没有货币类型,该如何解决?请大侠们指教。

2.Re:实在是受不了了,java怎么又这么多问题? [Re: huangfei] Copy to clipboard
Posted by: huangfei
Posted on: 2004-08-18 15:36

呵呵,还是我自己来回复,double, float类型用于科学和工程计算,对于商业计算,比如货币类型,需要用BigDecimal或者int,long类型。(见Effective Java Item 31)

3.Re:实在是受不了了,java怎么又这么多问题? [Re: huangfei] Copy to clipboard
Posted by: Julian13
Posted on: 2004-08-18 16:15

BTW, as i know, some of the financial application handle numeric data down to cent instead of dollar (the idea is keep using integer all the time and show as decimal when needed).

thus, in your example, it will become:
int o = 6496;
int t = 8100;
int s = o + t;

4.Re:实在是受不了了,java怎么又这么多问题? [Re: huangfei] Copy to clipboard
Posted by: zy_ball
Posted on: 2004-08-18 18:58

呵呵
楼主不错

货币是不能用double

我怀疑用int/long也会有问题,如果牵涉到利率计算、货币兑换什么的话。

5.Re:实在是受不了了,java怎么又这么多问题? [Re: huangfei] Copy to clipboard
Posted by: errorter
Posted on: 2004-08-18 19:34

货币类型使用 BigDecimal 类型

浮点数是用二进制系统表示的
1/10 在二进制系统中没有精确的表示
就如同在十进制系统中无法精确的表示 1/3

6.Re:我做了个时间计时器,怎么到了时间还不提示呢?急人那位仁兄帮忙看看 [Re: huangfei] Copy to clipboard
Posted by: angel421
Posted on: 2004-08-26 00:50

import java.io.*;
import java.util.Date;
import java.awt.*;
import java.awt.event.*;
public class ily
{
public static void main(String args[])
{
hxz asop=new hxz();

while(true)
{asop.time();
if(asop.flg==false)
break;
}
}
}
class hxz extends Frame implements ActionListener
{
Date tm;
static boolean flg=true;
Label la1,la2,la3;
Button btn1,btn2;
TextField tf1,tf2,tf3,tf4;

imag ig;
static String st1,st2,st3,st4;
hxz()
{
super("身体是革命的本钱");
setLayout(null);
setBackground(Color.red);
setResizable(true);
setSize(600,600);
setVisible(true);
tm=new Date();
tf4=new TextField(tm.toString());
btn1=new Button("锁定");
btn2=new Button("刷新");


tf1=new TextField(10);
tf2=new TextField(10);
tf3=new TextField(10);
tf4=new TextField(100);


la1=new Label("日");
la2=new Label("时");
la3=new Label("分");

ig=new imag();
btn1.setBounds(450,400,30,30);
btn2.setBounds(450,450,30,30);
ig.setBounds(300,300,200,200);


la1.setBounds(100,60,20,20);
tf1.setBounds(100,90,20,20);
la2.setBounds(100,120,20,20);
tf2.setBounds(100,150,20,20);
la3.setBounds(100,180,20,20);
tf3.setBounds(100,200,20,20);
tf4.setBounds(250,100,100,30);

add(btn1);add(btn2);
add(tf1); add(tf2); add(tf3);add(tf4);
add(ig);
add(la1);add(la2);add(la3);
btn1.addActionListener(this);
btn2.addActionListener(this);

tf1.addActionListener(this);
tf2.addActionListener(this);
tf3.addActionListener(this);


ig.setVisible(false);
addWindowListener
    (
      new WindowAdapter()
      {      
        public void windowClosing(WindowEvent e)
        {
          System.exit(0);
        }
      }
    Wink;
}

public void time()
{ if(flg==false)
{
tf4=new TextField("曾经有一个休息的机会放在我的面前,我想我应该珍惜,所以我决定休息了!");
}

else
{ while(flg)
{ tm=new Date();
st4=tm.toString();
tf4=new TextField(st4);
if(st4.substring(8,10).equals(st1))
if(st4.substring(11,13).equals(st2))
if(st4.substring(14,16).equals(st3))
{
flg=false;
}
}
}
}

public void actionPerformed(ActionEvent e)
{ String st5;
if(e.getSource()==btn2)
{
tm=new Date();
st5=tm.toString();
tf1.setEditable(true);
tf2.setEditable(true);
tf3.setEditable(true);
tf1.setText(st5.substring(8,10));
tf2.setText(st5.substring(11,13));
tf3.setText(st5.substring(14,16));
}
if(e.getSource()==btn1)
{
tf1.setEditable(false);
tf2.setEditable(false);
tf3.setEditable(false);
}
if(e.getSource()==tf1)
{
st1=tf1.getText();
}
if(e.getSource()==tf2)
{
st2=tf2.getText();
}
if(e.getSource()==tf3)
{
st3=tf3.getText();
}

}

}
class imag extends Canvas
{
Image img;
imag()
{
setSize(200,200);
setVisible(true);
Toolkit ti=getToolkit();
img=ti.getImage("ye.jpg");
}
public void paint(Graphics g)
{
int wt=img.getWidth(this);
int ht=img.getHeight(this);
g.drawImage(img,300,300,wt/2,ht/2,this);

}
}


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923