【问题标题】:How do I turn decimals into integers? (Java)如何将小数变成整数? (爪哇)
【发布时间】:2014-01-10 02:58:17
【问题描述】:

我做了一个计算器,可以计算圆的尺寸。我目前正在使用这个命令要求玩家输入圆的半径:

String br = JOptionPane.showInputDialog(null, "Enter The Radius" , "CircleHacker", JOptionPane.PLAIN_MESSAGE);
int bravo = Integer.parseInt(br);

它现在可以工作,但我刚刚意识到,由于它是基于整数的,它不能做小数! 我可以做些什么来修改我在这里的内容,使其可以处理小数吗? -谢谢(顺便说一下,我现在只知道 java 4 天,所以我只是一个初学者) -谢谢!

【问题讨论】:

  • 我猜你的意思是“它不能做小数”。它已经在做小数了。

标签: java integer decimal


【解决方案1】:

十进制数在 Java 中具有 doublefloat 数据类型。因此,您可以将代码重写为:

String br = JOptionPane.showInputDialog(null, "Enter The Radius" , "CircleHacker", JOptionPane.PLAIN_MESSAGE);
double bravo = Double.parseDouble(br);

Double 是一种更精确(但更大)的数据类型;由于内存很便宜,我建议使用double 而不是float

【讨论】:

  • 实际上,这些不是十进制数,而是二进制数。但重要的一点是它们可以表示小数值,而普通整数则不能。
  • @HotLicks 这在技术上是正确的(如果我在我的 Math.SE 主页上回答,我会这么说)。但是,使用 OP 使用的语言,以及小数部分用小点写的数字的白话来指定小数部分的开始,我想我会保持原样,让这些 cmets 澄清这一点。 ;)
【解决方案2】:

这个呢?

double bravo = Double.parseDouble(br);

假设用户输入类似1.23 这样的内容应该可以解决您的问题。

请注意,您也可以使用 float 代替 double,但 double 具有更高的精度,这可能与您的用例相关,也可能不相关。

另请注意,在某些语言环境中,使用了不同的分隔符(如逗号),您可能需要单独处理它们,请参阅https://stackoverflow.com/questions/4323599/best-way-to-parsedouble-with-comma-as-decimal-separator

【讨论】:

    【解决方案3】:

    对于计算器,您可以使用 Double.parseDouble(String) 和类似的东西 -

    double bravo = Double.parseDouble(br);
    

    但是您可以通过使用 BigDecimal 来支持任意精度 -

    BigDecimal bravo = new BigDecimal(br);
    

    如果您想丢失小数精度,您可以执行多种舍入,它们记录在我刚刚提供的相同链接中。例如BigDecimal#toBigInteger()(long) bravo(这是一个强制转换,不是四舍五入;但与floor() 函数具有相同的实际效果)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 2015-04-16
      • 2022-06-13
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      相关资源
      最近更新 更多