Tag: 舍入

圆满一双至3位有效数字

有没有人知道如何将双倍数值转化为3个重要数字,如本网站上的示例 http://www.purplemath.com/modules/rounding2.htm

Java – Decimal Format.parse返回具有指定小数位数的double值

我希望能够在格式字符串中给定多个小数位的情况下将字符串转换为Double 。 所以“###,## 0.000”应该给我一个2到3的小数位。 编辑 – 为发生的事情添加了更多信息 用户在UI中输入值 – 输入到String中。 规则是此值限制为3位小数。 底层代码将值存储在数据库中,然后在计算中使用。 因此,尾随小数位将导致计算略微超出预期。 我有以下代码: try { // output current locale we are running under (this happens to be “nl_BE”) System.out.println( “Current Locale is ” + Locale.getDefault().toString() ); // number in Central European Format with a format string specified in UK format String numberCE = “1,234567”; […]

舍入Java中的负数

根据维基百科在舍入负数时,您可以舍入绝对数。 因此,通过这种推理,-3.5将四舍五入为-4。 但是当我使用java.lang.Math.round(-3.5)返回-3时。 有人可以解释一下吗?

Java BigDecimal使用String构造函数进行错误,以使用ROUND_HALF_UP进行舍入

我正在尝试实现一个新的等级舍入到BigDecimal类,我得到一个可能的错误,我可能做错了。 下面的代码暴露了我的问题: public static void main(String[] args) throws IOException { BigDecimal valDouble = new BigDecimal(0.35); valDouble = valDouble.setScale(1, BigDecimal.ROUND_HALF_UP); System.out.println(valDouble.doubleValue()); // prints 0.3 BigDecimal valString = new BigDecimal(new String(“0.35”)); valString = valString.setScale(1, BigDecimal.ROUND_HALF_UP); System.out.println(valString.doubleValue()); // prints 0.4 } 我的疑问是,对于double和String构造函数,BigDecimal是不同的? 我无法理解这个’bug’,至少,我只是用一个简单的字符串concat来“解决”它,如下所示: BigDecimal valDouble = new BigDecimal(“” + 0.35); 什么可能导致这种奇怪的行为?

A Double(Java)中的小数位数

在java中是否有任何内置函数告诉我double中有多少小数位。 例如: 101.13 = 2 101.130 = 3 1.100 = 3 1.1 = 1 -3.2322 = 4 etc. 如果需要,我很乐意首先转换为另一种类型,我已经考虑过转换为bigdecimal而没有运气。

总是圆了一双

我怎么能总是将一个双向舍入到一个int,而不是将它向下舍入。 我知道Math.round(double) ,但我希望它总是向上舍入。 因此,如果它是3.2 ,它将四舍五入为4。 这可能吗?

将BigDecimal舍入到最接近的5美分

我想弄清楚如何将货币金额向上舍入到最接近的5美分。 以下显示了我的预期结果 1.03 => 1.05 1.051 => 1.10 1.05 => 1.05 1.900001 => 1.10 我需要结果的精度为2(如上所示)。 更新 按照下面的建议,我能做的最好的就是这个 BigDecimal amount = new BigDecimal(990.49) // To round to the nearest .05, multiply by 20, round to the nearest integer, then divide by 20 def result = new BigDecimal(Math.ceil(amount.doubleValue() * 20) / 20) result.setScale(2, RoundingMode.HALF_UP) 我不相信这是100%犹太人 – 我担心转换到双打时精度可能会丢失。 […]

将数字四舍五入为最接近的5的倍数

有谁知道如何将数字四舍五入到最接近的5的倍数? 我找到了一个算法将它四舍五入到最近的10的倍数,但我找不到这个。 这样做十点。 double number = Math.round((len + 5)/ 10.0) * 10.0;