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

Java大整数舍入

司寇昱
2023-03-14

我试图在Java中完善BigInteger,以下是我执行的代码

   BigDecimal prec1 = new BigDecimal("49.3249999999999999990")
                             .setScale( 2, RoundingMode.HALF_UP);
   BigDecimal prec2 = new BigDecimal("49.3249999999999999990")
                             .setScale( 3, RoundingMode.HALF_UP)
                             .setScale(2, RoundingMode.HALF_UP);

因此,输出prec1 = 49.32和prec2 = 49.33,对于我的使用情况,我需要始终舍入到49.33,那么除了设置两次比例之外,还有其他方法舍入到49.33吗?

共有1个答案

从元明
2023-03-14

所以我不是一个有10年经验的程序员,但我只是使用典型的类型转换来舍入我想要的加倍。

这段代码应该正确地对你的数字进行四舍五入:

    double d = 49.3249999999999999990;
    d +=  0.005;

    int i = (int) (d * 100);
    double roundedD = (double) i / 100;

输出是:

49.33

 类似资料:
  • 问题内容: 我想将1732的数字四舍五入到十,十万。我尝试了Math的舍入函数,但它仅针对float和double编写。如何针对Integer执行此操作?Java中有任何功能吗? 问题答案: 使用 精度 (Apache Commons Math 3.1.1) 使用 MathUtils (Apache Commons Math)-旧版本 标度 -小数点右边的位数。(+/-) 由于使用了 round(

  • 问题内容: 我想将整数四舍五入到Java中最接近的1000。 因此,例如: 13,623发至13,000 18,999轮到18,000 等等 问题答案: 只需除以1000,就可以丢掉您不感兴趣的数字,然后乘以1000: 或者,您也可以尝试:

  • 检查了一些解决方案,但我没有得到预期的结果,这是我的代码; 谢了!

  • 问题内容: 在C中,整数(对于32位计算机)为32位,范围为-32,768至+32,767。在Java中,整数(long)也是32位,但范围为-2,147,483,648至+2,147,483,647。 我不了解Java中的范围有何不同,即使位数相同。有人可以解释吗? 问题答案: 在C语言中,语言本身无法确定某些数据类型的表示形式。它因机器而异,在嵌入式系统上int可以为16位宽,尽管通常为32位

  • 我试图从Geeksforgeeks中解决最大整数值问题。 问题如下:给定一个数字(0-9)的字符串S,您的任务是找到可以从字符串中获得的最大值,方法是将“*”或“”运算符放在数字之间,同时从字符串的左到右遍历并一次拾取一个数字。 输入:输入的第一行包含T表示测试用例的数量。T测试用例紧随其后。每个测试用例包含一行表示字符串的输入。 输出:对于每个测试用例,打印获得的最大值。 这就是我所做的: 输入

  • 问题内容: 我需要以下结果 还是?我该怎么办? 问题答案: 您可以使用将小数位数减少为零。假设拥有要取整的值: 使用起来有点麻烦,因为它要求您指定要保留的位数。在您的示例中,该值为3,但这不适用于所有值: (请注意,对象是不可改变的,都和会返回一个新的对象。)