如何修复Java中的浮点小数错误?



我试图创建一个简单的程序,只是使用内置的Math方法,但每次我运行它,我得到一个浮点小数错误,所以我想知道什么是浮点小数和错误是如何发生的。

下面是我的代码:
private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) {
    double dblSquareRoot = Double.parseDouble(lblSquareRoot.getText());
    double dblRandomNumber = Double.parseDouble(lblRandomNumber.getText());
    double dblSquareNumber = Double.parseDouble(lblSquareNumber.getText());
    double dblRoundUp = Double.parseDouble(lblRoundUp.getText());
    double dblRoundDown = Double.parseDouble(lblRoundDown.getText());
    lblOutputSquareRoot.setText("" + Math.sqrt(dblSquareRoot));
    lblOutputSquareNumber.setText("" + Math.pow(dblSquareNumber, 2));
    lblOutputRoundUp.setText("" + Math.ceil(dblRoundUp));
    lblOutputRoundDown.setText("" + Math.floor(dblRoundDown)); 
}                                    
private void btnGenerateActionPerformed(java.awt.event.ActionEvent evt) {
    double dblRandomNumber = (Math.random() * 101.0);
    txtRandomNumber.setText("" + df.format(dblRandomNumber));
    txtSquareRoot.setText("" + df.format(dblRandomNumber));
    txtSquareNumber.setText("" + df.format(dblRandomNumber));
    txtRoundUp.setText("" + df.format(dblRandomNumber));
    txtRoundDown.setText("" + df.format(dblRandomNumber));
    df.format = "###.00";
}

错误——

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Square Root"
  at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
  at java.lang.Double.parseDouble(Double.java:540)
  at mathMethods.btnCalculateActionPerformed(mathMethods.java:230)
  at mathMethods.access$100(mathMethods.java:13)
  at mathMethods$2.actionPerformed(mathMethods.java:97)
  at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
  at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
  at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
  at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
  at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
  at java.awt.Component.processMouseEvent(Component.java:6516)
  at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
  at java.awt.Component.processEvent(Component.java:6281)
  at java.awt.Container.processEvent(Container.java:2229)
  at java.awt.Component.dispatchEventImpl(Component.java:4872)
  at java.awt.Container.dispatchEventImpl(Container.java:2287)
  at java.awt.Component.dispatchEvent(Component.java:4698)
  at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
  at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
  at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
  at java.awt.Container.dispatchEventImpl(Container.java:2273)
  at java.awt.Window.dispatchEventImpl(Window.java:2719)
  at java.awt.Component.dispatchEvent(Component.java:4698)
  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
  at java.awt.EventQueue.access$200(EventQueue.java:103)
  at java.awt.EventQueue$3.run(EventQueue.java:694)
  at java.awt.EventQueue$3.run(EventQueue.java:692)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
  at java.awt.EventQueue$4.run(EventQueue.java:708)
  at java.awt.EventQueue$4.run(EventQueue.java:706)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
  at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

看起来您正在尝试从标签而不是文本字段中解析字符串。看一下变量名。

最新更新