我做了一个计算器来计算圆的测量值。我目前正在使用此命令要求玩家输入圆的半径:
String br = JOptionPane.showInputDialog(null, "Enter The Radius" , "CircleHacker", JOptionPane.PLAIN_MESSAGE);
int bravo = Integer.parseInt(br);
它现在有效,但我刚刚意识到,因为它是基于整数的,所以它不能做小数! 有什么我可以做的来修改我在这里的内容,使其能够处理小数位数吗? -thanks(顺便说一句,我现在只知道java 4天所以我只是一个初学者) -Thanks!
答案 0 :(得分:2)
十进制数在Java中具有数据类型double
和float
。因此,您可以将代码重写为:
String br = JOptionPane.showInputDialog(null, "Enter The Radius" , "CircleHacker", JOptionPane.PLAIN_MESSAGE);
double bravo = Double.parseDouble(br);
Double是一种更精确(更大)的数据类型;由于内存很便宜,我建议使用double
而不是float
。
答案 1 :(得分:1)
这个怎么样?
double bravo = Double.parseDouble(br);
假设用户输入类似1.23
的内容,这可以解决您的问题。
请注意,您也可以使用float
代替double
,但double
具有更高的精度,可能与您的用例相关或不相关。
另请注意,在某些语言环境中,使用了逗号等不同的分隔符,您可能需要单独处理它们,请参阅https://stackoverflow.com/questions/4323599/best-way-to-parsedouble-with-comma-as-decimal-separator
答案 2 :(得分:1)
对于计算器,您可以使用Double.parseDouble(String)与此类似的内容 -
double bravo = Double.parseDouble(br);
但是你可以使用类似的BigDecimal来支持任意精度 -
BigDecimal bravo = new BigDecimal(br);
如果要丢失小数精度,可以执行几种舍入,并将它们记录在我刚提供的相同链接中。例如,BigDecimal#toBigInteger()
和(long) bravo
(这是一个演员,不是四舍五入;但具有与floor()
函数相同的实际效果。)