草庐IT

java - 如何在不四舍五入的情况下截断 BigDecimal

在我的代码中经过一系列计算后,我有一个BigDecimal值0.01954然后我需要将此BigDecimal乘以100并且我希望计算的值是1.95我不希望进行任何向上或向下舍入,我只想截断任何超过小数点后两位的值我尝试将比例设置为2,但后来我得到一个ArithmeticException说四舍五入是必要的。如何在不指定舍入的情况下设置比例? 最佳答案 使用RoundingMode.DOWN或RoundingMode.FLOOR.BigDecimalnewValue=myBigDecimal.setScale(2,RoundingMo

java - 使用 BigDecimal 数字进行四舍五入

我想设置两个BigDecimal数字a和b的比例。如本例所示:BigDecimala=newBigDecimal("2.6E-1095");BigDecimalb=newBigDecimal("2.7E-1105");inti=112,j=1;BigDecimalaa=a.setScale(i+j);BigDecimalbb=b.setScale(i+j);当我运行时,我遇到了这个异常:java.lang.ArithmeticException:Roundingnecessaryatjava.math.BigDecimal.divideAndRound(BigDecimal.java:

java - 使用 BigDecimal 数字进行四舍五入

我想设置两个BigDecimal数字a和b的比例。如本例所示:BigDecimala=newBigDecimal("2.6E-1095");BigDecimalb=newBigDecimal("2.7E-1105");inti=112,j=1;BigDecimalaa=a.setScale(i+j);BigDecimalbb=b.setScale(i+j);当我运行时,我遇到了这个异常:java.lang.ArithmeticException:Roundingnecessaryatjava.math.BigDecimal.divideAndRound(BigDecimal.java:

java - 0.99999999999相乘时可以四舍五入到1.0吗?

当一个非常接近1的float乘以int>0时,它是否可以被解释为1。也就是说,如果Math.random()返回其可能的最高结果(比1.0低1步),将(int)(Math.random()*8)是8还是7?举个实际的例子,这个经常使用的构造能否给出索引越界错误:someArray[(int)(Math.random()*someArray.length)];我对Java和ActionScript3的答案特别感兴趣,但我想它们都使用相同的浮点运算规则,并且任何平台的答案都会很有用。更新:虽然我已经接受了答案,但我仍然希望确认这在ActionScript3中也不会出错,因为一位同事报告说他

java - 0.99999999999相乘时可以四舍五入到1.0吗?

当一个非常接近1的float乘以int>0时,它是否可以被解释为1。也就是说,如果Math.random()返回其可能的最高结果(比1.0低1步),将(int)(Math.random()*8)是8还是7?举个实际的例子,这个经常使用的构造能否给出索引越界错误:someArray[(int)(Math.random()*someArray.length)];我对Java和ActionScript3的答案特别感兴趣,但我想它们都使用相同的浮点运算规则,并且任何平台的答案都会很有用。更新:虽然我已经接受了答案,但我仍然希望确认这在ActionScript3中也不会出错,因为一位同事报告说他

Java:四舍五入到最接近 5 的倍数(向上或向下)

我需要将一个数字四舍五入到最接近的5的倍数(向上或向下)。例如,这里是数字列表及其旁边需要向上/向下舍入的数字。12.51062.16068.37074.57580.780数字只会是正数。 最佳答案 还没有测试过,但是5*(Math.round(f/5));应该可以工作 关于Java:四舍五入到最接近5的倍数(向上或向下),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/14196

Java:四舍五入到最接近 5 的倍数(向上或向下)

我需要将一个数字四舍五入到最接近的5的倍数(向上或向下)。例如,这里是数字列表及其旁边需要向上/向下舍入的数字。12.51062.16068.37074.57580.780数字只会是正数。 最佳答案 还没有测试过,但是5*(Math.round(f/5));应该可以工作 关于Java:四舍五入到最接近5的倍数(向上或向下),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/14196

java - java - 如何在java中将时间四舍五入到最近的一刻钟?

鉴于今天的时间,例如下午2点24分,我如何让它舍入到下午2点30分?类似地,如果时间是下午2:17,我如何让它舍入到下午2:15? 最佳答案 四舍五入您需要使用模来截断一刻钟:DatewhateverDateYouWant=newDate();Calendarcalendar=Calendar.getInstance();calendar.setTime(whateverDateYouWant);intunroundedMinutes=calendar.get(Calendar.MINUTE);intmod=unroundedMin

java - java - 如何在java中将时间四舍五入到最近的一刻钟?

鉴于今天的时间,例如下午2点24分,我如何让它舍入到下午2点30分?类似地,如果时间是下午2:17,我如何让它舍入到下午2:15? 最佳答案 四舍五入您需要使用模来截断一刻钟:DatewhateverDateYouWant=newDate();Calendarcalendar=Calendar.getInstance();calendar.setTime(whateverDateYouWant);intunroundedMinutes=calendar.get(Calendar.MINUTE);intmod=unroundedMin

java - 如何通过四舍五入在Java中将double转换为int?

我需要在Java中将double类型转换为int,但数值必须始终向下舍入。即99.99999999->99 最佳答案 转换为int会隐式删除任何小数。无需调用Math.floor()(假设为正数)使用(int)进行简单类型转换,例如:System.out.println((int)(99.9999));//Prints99话虽如此,它确实与Math.floor有不同的行为,它向负无穷取整(@ChrisWong) 关于java-如何通过四舍五入在Java中将double转换为int?,我们