用jsp 做计算器时,两个操作数是用double 类型的,可是运算结果有时小数点后面数太多,求有什么使运算结果精确点?

解决方案 »

  1.   

    import javax.swing.*;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.*;
    import java.util.Date;
    import java.text.SimpleDateFormat;/**
     * 秒表功能
     * @author Administrator
     *
     */
    public class StopWatch extends JFrame {
    JButton btnStart, btnStop;
    JLabel label;
    Timer timer; public StopWatch() {
    label = new JLabel("00:00:00.000");
    btnStart = new JButton("start");
    btnStop = new JButton("stop");
    final int delay = 100;
    final Date startTime = new Date();
    final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.S");
    final Action taskPerformer = new AbstractAction() {
    public void actionPerformed(ActionEvent evt) {
    // 显示时间
    Date d = new Date(System.currentTimeMillis()
    - startTime.getTime() - 28800000);
    label.setText(sdf.format(d));
    label.repaint();
    }
    };
    btnStart.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    startTime.setTime(new Date().getTime());
    timer = new Timer(delay, taskPerformer);
    timer.start();
    }
    });
    btnStop.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    if (timer != null && timer.isRunning())
    timer.stop();
    }
    }); Container c = getContentPane();
    c.add(label, BorderLayout.NORTH);
    c.add(btnStart, BorderLayout.CENTER);
    c.add(btnStop, BorderLayout.SOUTH);
    } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    createAndShowGUI();
    }
    }); } private static void createAndShowGUI() {
    StopWatch window = new StopWatch();
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.pack();
    window.setVisible(true);
    }
    }
      

  2.   

    BigDecimal 可以实现很高精度。