Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NumberFormatException:无限还是NaN?_Java_String_Double_Bigdecimal - Fatal编程技术网

Java NumberFormatException:无限还是NaN?

Java NumberFormatException:无限还是NaN?,java,string,double,bigdecimal,Java,String,Double,Bigdecimal,你好,我想做一个非常简单的计算。起初我使用了double,但由于结果可能太大,无法放入一个double,所以我生平第一次使用了bigdecime。我收到一条错误信息,但我不知道我做错了什么。 谢谢你的帮助 我的代码: double cn = 299792458; double temp4 = 0; BigDecimal en = BigDecimal.valueOf(0); BigDecimal mn = BigDecimal.valueOf(0); BigDecimal temp = BigD

你好,我想做一个非常简单的计算。起初我使用了double,但由于结果可能太大,无法放入一个double,所以我生平第一次使用了bigdecime。我收到一条错误信息,但我不知道我做错了什么。 谢谢你的帮助

我的代码:

double cn = 299792458;
double temp4 = 0;
BigDecimal en = BigDecimal.valueOf(0);
BigDecimal mn = BigDecimal.valueOf(0);
BigDecimal temp = BigDecimal.valueOf(0);
BigDecimal temp1 = BigDecimal.valueOf(0);
String temp3 = null;

//String m.getText() to bigdecimal mn
mn = new BigDecimal(m.getText().replaceAll(",", ""));
//cn^2 to double temp4
temp4 = Math.pow(cn, cn);
//dobule temp4 to bigdecimal temp
temp = new BigDecimal(temp4);
//multiply bigdecimal temp with bigdecimal mn. Saves result to bigdecimal en
en = temp.multiply(mn);
//bigdecimal en to string temp3
temp3 = en.toString();
//Set string temp3 to textfield e1
e1.setText(temp3);
错误代码:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: Infinite or NaN
at java.math.BigDecimal.<init>(BigDecimal.java:895)
at java.math.BigDecimal.<init>(BigDecimal.java:872)
at fysik.actionPerformed(fysik.java:151)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
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:6535)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
线程“AWT-EventQueue-0”java.lang.NumberFormatException中的异常:无限或NaN 在java.math.BigDecimal.(BigDecimal.java:895) 在java.math.BigDecimal.(BigDecimal.java:872) 在fysik.actionPerformed(fysik.java:151) 在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:402) 在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:259) 在javax.swing.plaf.basic.BasicButtonListener.MouseRelease(BasicButtonListener.java:252) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6535) 位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3324) 位于java.awt.Component.processEvent(Component.java:6300) 位于java.awt.Container.processEvent(Container.java:2236) 位于java.awt.Component.dispatchEventImpl(Component.java:4891) 位于java.awt.Container.dispatchEventImpl(Container.java:2294) 位于java.awt.Component.dispatchEvent(Component.java:4713) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4888) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4525) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 位于java.awt.Container.dispatchEventImpl(Container.java:2280) 位于java.awt.Window.dispatchEventImpl(Window.java:2750) 位于java.awt.Component.dispatchEvent(Component.java:4713) 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 在java.awt.EventQueue.access$500(EventQueue.java:97) 在java.awt.EventQueue$3.run(EventQueue.java:709) 在java.awt.EventQueue$3.run(EventQueue.java:703) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 在java.awt.EventQueue$4.run(EventQueue.java:731) 在java.awt.EventQueue$4.run(EventQueue.java:729) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 在语句中

temp4 = Math.pow(cn, cn);
您正在尝试计算299792458299792458。该值远远超过了
double
的容量。我想你是说

temp4 = Math.pow(cn, 2);


所有问题的根源在于: 双cn=299792458; System.out.println(Math.pow(cn,cn))

对于这些值,使用Math.pow可以得到
Infinite

哪个值对于构造
BinInteger
object

NumberFormatException:Infinite还是NaN无效?对此有什么不清楚的?可能是X-Y问题。为什么要将
299792458
提升到
299792458
的高度?Downvoter:这是一个简单的初学者错误,但OP提供了所有必要的信息。它也超出了BigDecimal的实际范围。非常感谢。也许我应该在清醒的时候检查我的代码。再次感谢你!
temp4 = cn * cn;