相关疑难解决方法(0)

如何在Java中将数字舍入到n个小数位

我想要的是一种将double转换为使用half-up方法进行舍入的字符串的方法 - 即如果要舍入的小数为5,则它总是向上舍入到前一个数字.这是在大多数情况下舍入大多数人所期望的标准方法.

我也希望只显示有效数字 - 即不应该有任何尾随零.

我知道这样做的一种方法是使用该String.format方法:

String.format("%.5g%n", 0.912385);
Run Code Online (Sandbox Code Playgroud)

收益:

0.91239
Run Code Online (Sandbox Code Playgroud)

这很好,但它总是显示5位小数的数字,即使它们不重要:

String.format("%.5g%n", 0.912300);
Run Code Online (Sandbox Code Playgroud)

收益:

0.91230
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用DecimalFormatter:

DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
Run Code Online (Sandbox Code Playgroud)

收益:

0.91238
Run Code Online (Sandbox Code Playgroud)

但是你可以看到这使用了半均匀舍入.也就是说,如果前一个数字是偶数,它将向下舍入.我想要的是这个:

0.912385 -> 0.91239
0.912300 -> 0.9123
Run Code Online (Sandbox Code Playgroud)

在Java中实现这一目标的最佳方法是什么?

java decimal rounding digits

1209
推荐指数
22
解决办法
155万
查看次数

为什么不使用Double或Float来表示货币?

我总是被告知永远不要代表钱doublefloat类型,这次我向你提出问题:为什么?

我确信有一个很好的理由,我根本不知道它是什么.

floating-point currency

887
推荐指数
11
解决办法
27万
查看次数

将Double值格式化为2个小数位的最佳方法

可能重复:
将小数点后的双精度数加到2位有效数字

我在我的应用程序中处理了很多双值,是否有任何简单的方法来处理Java中十进制值的格式?

还有其他更好的办法吗?

 DecimalFormat df = new DecimalFormat("#.##");
Run Code Online (Sandbox Code Playgroud)

我想要做的基本上是格式双值

23.59004  to 23.59

35.7  to 35.70

3.0 to 3.00

9 to 9.00
Run Code Online (Sandbox Code Playgroud)

java

292
推荐指数
2
解决办法
65万
查看次数

将BigDecimal舍入为*always*有两个小数位

我正在尝试将BigDecimal值向上舍入到小数点后两位.

我正在使用

BigDecimal rounded = value.round(new MathContext(2, RoundingMode.CEILING));
logger.trace("rounded {} to {}", value, rounded);
Run Code Online (Sandbox Code Playgroud)

但它不能始终如一地做我想做的事:

rounded 0.819 to 0.82
rounded 1.092 to 1.1
rounded 1.365 to 1.4 // should be 1.37
rounded 2.730 to 2.8 // should be 2.73
rounded 0.819 to 0.82
Run Code Online (Sandbox Code Playgroud)

我不关心有效数字,我只想要两位小数.我如何使用BigDecimal执行此操作?或者是否有另一个类/库更适合这个?

java math rounding bigdecimal

198
推荐指数
1
解决办法
18万
查看次数

Android - 小数点后2位

可能重复:
将小数点后的双精度数加到2位有效数字

我知道有很多关于如何围绕这种数字的例子.但有人可以告诉我如何圆双,获得我可以显示为字符串的值,并总是有2位小数?

double android decimal rounding

133
推荐指数
2
解决办法
18万
查看次数

Scala Doubles和Precision

是否有可以截断或舍入Double的函数?在我的代码中的某一点,我想要一个像:1.23456789舍入到的数字1.23

double scala truncate rounding

108
推荐指数
7
解决办法
10万
查看次数

用Java表示货币价值

我知道BigDecimal是用于在Java中表示货币价值的推荐最佳实践.你用什么?您是否更喜欢使用更好的库?

java currency bigdecimal

92
推荐指数
5
解决办法
4万
查看次数

如何在Java中将两个小数位舍入到两位小数?

这就是我将双精度数转换为2位小数的方法:

amount = roundTwoDecimals(amount);

public double roundTwoDecimals(double d) {
    DecimalFormat twoDForm = new DecimalFormat("#.##");
    return Double.valueOf(twoDForm.format(d));
}
Run Code Online (Sandbox Code Playgroud)

如果金额= 25.3569或类似的东西,这很好用,但如果金额= 25.00或金额= 25.0,那么我得到25.0!我想要的是舍入和格式化为2位小数.

java double

62
推荐指数
6
解决办法
22万
查看次数

使用前导0格式化双精度到2位小数

可能重复:
将小数点后的双精度数加到2位有效数字

我试图用前导零来格式化一个双精度到2位小数,并且没有运气.这是我的代码:

Double price = 32.0;
DecimalFormat decim = new DecimalFormat("#.##");
Double price2 = Double.parseDouble(decim.format(price));
Run Code Online (Sandbox Code Playgroud)

我希望输出32.00相反,我得到32.0
任何解决方案?

java double

35
推荐指数
2
解决办法
7万
查看次数

舍入到小数点后2位

可能重复:
将小数点后的双精度数加到2位有效数字

我有:

mkm=((((amountdrug/fluidvol)*1000)/60)*infrate)/ptwt; 
Run Code Online (Sandbox Code Playgroud)

在我的Java代码中.代码工作正常,但返回到几个小数位.如何将其限制为2或3?

java android

28
推荐指数
4
解决办法
10万
查看次数