gpt4 book ai didi

java - 大十进制 while 循环

转载 作者:行者123 更新时间:2023-12-02 13:25:13 27 4
gpt4 key购买 nike

我有一个 while 循环,它使用了一个整数,但我将它转换为一个大的 Decimal,因为该值太高,并且我不确定如何使我的 while 循环使用一个大的 Decimal 而不是我的代码中的整数如下。

public String getsize()
{
BigDecimal size = new BigDecimal(mySize);
int count = 0;
String dataType = "";
while (size > 1000 )
{
size = size.divide(size, 1000);
count++;
}
switch (count)
{
case 0:
dataType = "Bytes";
break;
case 1:
dataType = "KB";
break;
case 2:
dataType = "MB";
break;
case 3:
dataType = "GB";
break;
case 4:
dataType = "KB";
break;
}
return size + dataType ;
}

错误出现在 while (size > 1000 ) 行,因为如果 size 是整数,则这是该方法。有人可以告诉我使用大十进制大小来执行此操作的方法是什么吗?我在想出这个问题时遇到了一些麻烦
编辑:给出的解决方案现在在我的分界线中弹出了一个不相关的问题我得到:“线程“main”java.lang.IllegalArgumentException中的异常:无效的舍入模式”知道如何解决这个问题吗?我认为最好在这里发帖,然后提出一个全新的问题,但如果这是正确的,我会这样做。

最佳答案

要比较BigDecimals,请使用compareTo方法; BigDecimalComparable。如果 size 大于 thousand,则 compareTo 方法将返回大于 0 的整数。

BigDecimal thousand = new BigDecimal(1000);
while (size.compareTo(thousand) > 0 )

顺便说一句,您似乎没有正确执行 BigDecimal 除法:

size = size.divide(size, 1000);

这会将 1000 解释为 rounding mode它将导致 IllegalArgumentException。我认为你只需要划分它:

size = size.divide(thousand);  // see above for BigDecimal "thousand" declaration

另外,情况4是不正确的;除以 1000 4 次(万亿)后,它应该是“TB”,表示太字节:

case 4:
dataType = "TB";
break;

关于java - 大十进制 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16113350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com