当前位置: 首页 > 知识库问答 >
问题:

计算BigInteger中的小数位数

公良骁
2023-03-14

我正在尝试在旁边使用BigIntgerMath。Log10方法。

final BigInteger answerNo = fact;
final int digits = 1 + (int)Math.floor(Math.log10(answerNo));

不幸的是,编译器说不兼容的类型。

如果我将ints更改为Bigintgers,它仍然不喜欢它。

共有3个答案

鞠征
2023-03-14

BigInteger。如果只关心数字计数,toString()在内存方面可能效率低下。

相反,您可以尝试将BigIntger转换为BigDecimal并使用BigDecimal.precision()来实现相同的目的。有关详细信息,请参阅此答案。

卞俊哲
2023-03-14
  1. 不能将int赋值给biginger——可以这样写:final biginger answerNo=biginger。(事实)的价值

如果你不介意精度下降,你可以简单地使用双倍:

final int digits = 1 + (int)Math.floor(Math.log10(fact));

如果您关心精度,则需要手动计算日志

宿淳
2023-03-14

不必执行log10,只需执行以下操作即可找到位数:

int digits = answerNo.toString().length();
 类似资料:
  • 我需要一个大整数的小数位数。例如: 返回 返回 返回 返回 我需要对和十进制数字及更多数字执行此操作。我如何快速且可扩展地完成这项工作? 转换为字符串的方法很慢: 这种10倍循环的方法更慢: 有没有更快的方法?

  • 问题内容: 我需要计算的小数位数。例如: 退货 退货 退货 退货 我需要做的这 一个与十进制数字多。 我该如何快速且可扩展? 在 转换到字符串的 方法是缓慢的: 这种 按十个循环进行循环的 方法甚至更慢: 有没有更快的方法? 问题答案: 这看起来像在工作。我还没有进行详尽的测试,也没有进行任何时间的测试,但似乎运行时间合理。 在我的Celeron M笔记本电脑上花了大约3秒钟,因此它在某些不错的工

  • 我试图使用值在C#中实现以下Java函数,以便不再适用64位限制。作为一项健全性检查,我将使用的原始函数也转换为C#代码。然而,问题是,使用的版本工作时,使用的版本并不总是返回相同的结果。 C#中原始函数的实现。 而不是像原始的Java代码那样打印所有的值,我打算使用它们,这样我就可以单独返回每个值。 在组合学中,使用choose函数可以很容易地验证生成的数字集合是否具有正确的值数: 从52张扑克

  • 我正在学习浮点格式(IEEE)。在单精度浮点格式中,提到尾数有24位,因此它具有6 1/2十进制数字的精度(根据书中“理解机器”),以及7.22十进制数字的精度。 我不明白精度的小数位数是怎么算出来的。有人能告诉我吗?

  • 我对编程很陌生,在大学里我们学习了不同类型的数字(整数、短数、浮数、双数)。Float和double是浮点数。通常,它们由一个符号+/-、一个尾数和一个指数组成。每个部分占用一定数量的比特。一个浮动最多可以显示小数点后7位,最多可以双倍显示16位。其公式是: 23·log10(2)=23·(log(2)/log(10))≈23·0.3≈7(浮点数小数点后) 52·0.3≈16(双人小数点后) 我知

  • 问题内容: 我正在尝试计算由文本字段接收的输入填充的数组的总数,均值和中位数。我设法算出了总数和均值,但我只是无法获得中位数。我认为在执行此操作之前需要对数组进行排序,但是我不确定如何执行此操作。这是问题吗,还是我没有找到另一个问题?这是我的代码: 问题答案: Java中的Arrays类具有静态的排序功能,您可以使用调用该功能。