【问题标题】:Round java double圆形java双
【发布时间】:2014-03-30 18:52:58
【问题描述】:

我创建了一个贝叶斯分类器,它基本上只返回双精度值。

但是,这些双精度数很大,例如:2.834096154725778E73。

我对 E 科学记数法了解不多,我只想有一个可用的双精度数,我可以在我的代码的其他方面使用它(我想使用模糊逻辑的值)。 我在网上看过,但我尝试过的没有奏效。

我基本上只是想让上面指定的双精度表示更小。

任何帮助将不胜感激!

【问题讨论】:

  • 这是一个很大的数字。你怎么可能用一个小数来表示它?这就像说您希望将世界人口表示为 0 到 100 之间的数字。
  • 这不清楚。你在变量中有这个值吗?那么问题出在哪里?
  • 我创建了一个贝叶斯分类器 [...] 我对 E 科学通知了解不多 o_O 开个玩笑...你到底想要什么?打印位数少的数字?
  • 我希望我能以某种方式对数字进行四舍五入 - 但我不知道这个 double 值实际上是什么(使用 E)。
  • 是什么让这个数字无法用于您的程序的其余部分?如果按原样使用会出现什么问题?

标签: java math double rounding


【解决方案1】:

您可以使用格式对其进行舍入。

类似:

    DecimalFormat df = new DecimalFormat("#.#####");
    df.format(0.912385); // or any big number

然后,你将得到你的数字,但四舍五入......

【讨论】:

  • 对不起,当我早些时候对此投反对票时,我有点着急。 OP 有一个 74 位数字。这么大的双精度数总是整数,因为双精度数只有大约 15-16 个十进制数字的精度。向他们展示如何使用 5 个小数位对其进行格式化并不是很有帮助 - 这些小数位将始终为零,并且此解决方案根本不会进行任何舍入。
  • 没有必要无礼......这只是一个想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
  • 2021-12-05
  • 1970-01-01
  • 2012-03-19
  • 2023-03-29
  • 1970-01-01
相关资源
最近更新 更多