我一直在网上阅读有关处理float和doublejava类型的问题.不幸的是,图像仍然不清楚.因此,我在这里直接问.:(
我的MySQL表有各种各样的DECIMAL(m,d)列.在m从5到30的范围可以是d保持在2的常数.
我应该在Java中使用什么等效的数据类型来工作(即存储,检索和处理)我的表中值的大小?(我已经和双了 - 所以这个帖子).
在尝试从字符串中解析double时,我遇到了错误
Double dpu = new Double(dpuField.getText());
Run Code Online (Sandbox Code Playgroud)
例如 -
"1" -> java.lang.NumberFormatException: empty String
"10" -> 1.0
"101" -> 10.0
"101." -> 101.0
"101.1" -> 101.0
"101.19" -> 101.1
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?将字符串转换为double值的正确方法是什么?我应该采取什么措施来对这些价值观进行操作?
这是代码 -
System.out.println(dpuField.getText());
Double dpu = new Double(dpuField.getText());
System.out.println(dpu);
Run Code Online (Sandbox Code Playgroud)
是的,问题在于getText()报告错误的价值dpuField.在JTextField keyTyped事件上调用此方法.那么这里出了什么问题?
看看:http:
//journals.ecs.soton.ac.uk/java/tutorial/post1.0/ui/keylistener.html
显然,keyTyped()不给我键码.我得切换到keyRealeased()
我应该在Java中使用什么等效的数据类型来工作(即存储,检索和处理)我的表中值的大小?(我已经和双了 - 所以这个帖子).
因为它是一个DECIMAL领域,你应该更喜欢 java.math.BigDecimal.您可以使用它将其存储在DB中PreparedStatement#setBigDecimal(),您可以使用DB从DB中检索它ResultSet#getBigDecimal().
在尝试从字符串中解析double时,我遇到了错误
这不可能是真的.问题出在其他地方.也许它只是没有返回您希望返回的数据,或者您没有使用/调试您期望它们的值.