Questions tagged «bigdecimal»

BigDecimal是Java中的数字对象类型,它以任意精度表示十进制数。




1
将BigDecimal舍入为*始终*具有两个小数位
我正在尝试将BigDecimal值四舍五入到小数点后两位。 我正在使用 BigDecimal rounded = value.round(new MathContext(2, RoundingMode.CEILING)); logger.trace("rounded {} to {}", value, rounded); 但这并不能满足我的一贯要求: 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.74 rounded 0.819 to 0.82 我不在乎有效数字,我只想要两位小数。我该如何使用BigDecimal?还是有另一个更适合于此的班级/图书馆?

5
如何将DecimalFormat的小数点分隔符从逗号更改为点/点?
我有一个疯狂的方法,可以将BigDecimal值转换为漂亮且可读的字符串。 private String formatBigDecimal(BigDecimal bd){ DecimalFormat df = new DecimalFormat(); df.setMinimumFractionDigits(3); df.setMaximumFractionDigits(3); df.setMinimumIntegerDigits(1); df.setMaximumIntegerDigits(3); df.setGroupingSize(20); return df.format(bd); } 但是,它还会产生一个所谓的分组分隔符",",该分隔符使我的所有值如下所示: xxx,xxx 我确实需要将分隔符设置为点或点而不是逗号。有人知道如何完成这个小壮举吗? 我已阅读本,尤其是这种死亡,但现在我无法找到一个方法来完成这件事。我是否以错误的方式处理?有更优雅的方法吗?甚至可能是一个解决方案,说明了不同的本地号码表示形式,因为按照欧洲标准,逗号将是完美的。


5
使用流加BigDecimals
我有一个BigDecimals集合(在此示例中为LinkedList),我想将它们加在一起。是否可以为此使用流? 我注意到Stream该类有几种方法 Stream::mapToInt Stream::mapToDouble Stream::mapToLong 每种sum()方法都有一种方便的方法。但是,我们知道,float和double算术几乎总是一个坏主意。 那么,有没有一种方便的方法来汇总BigDecimals? 这是我到目前为止的代码。 public static void main(String[] args) { LinkedList<BigDecimal> values = new LinkedList<>(); values.add(BigDecimal.valueOf(.1)); values.add(BigDecimal.valueOf(1.1)); values.add(BigDecimal.valueOf(2.1)); values.add(BigDecimal.valueOf(.1)); // Classical Java approach BigDecimal sum = BigDecimal.ZERO; for(BigDecimal value : values) { System.out.println(value); sum = sum.add(value); } System.out.println("Sum = " + sum); // Java 8 approach …

4
BigDecimal equals()与compareTo()
考虑简单的测试类: import java.math.BigDecimal; /** * @author The Elite Gentleman * */ public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub BigDecimal x = new BigDecimal("1"); BigDecimal y = new BigDecimal("1.00"); System.out.println(x.equals(y)); System.out.println(x.compareTo(y) == 0 ? "true": "false"); } } …

11
BigDecimal的加法
我想对一些用BigDecimal类型表示的货币值做一些简单的求和。 BigDecimal test = new BigDecimal(0); System.out.println(test); test.add(new BigDecimal(30)); System.out.println(test); test.add(new BigDecimal(45)); System.out.println(test); 显然我对BigDecimal算术不太了解,请参见后面的输出。 Test 0 0 0 谁能帮我吗?
155 java  bigdecimal 

2
BigDecimal setScale和舍入
这两个电话有什么区别?(有没有?) // 1. new BigDecimal("3.53456").round(new MathContext(4, RoundingMode.HALF_UP)); // 2. new BigDecimal("3.53456").setScale(4, RoundingMode.HALF_UP);
140 java  bigdecimal 

8
将BigDecimal转换为整数
我有Hibernate方法,它返回了一个BigDecimal。我有另一个API方法,我需要将该数字传递给它,但是它接受Integer作为参数。我不能更改两种方法的返回类型或变量类型。 现在如何将BigDecimal转换为Integer并将其传递给第二种方法? 有没有解决的办法?


9
安全字符串到BigDecimal的转换
我正在尝试从字符串中读取一些BigDecimal值。假设我有以下字符串:“ 1,000,000,000.999999999999999”,我想从中获取一个BigDecimal。怎么做呢? 首先,我不喜欢使用字符串替换(替换逗号等)的解决方案。我认为应该有一些精巧的格式化程序为我完成这项工作。 我发现了DecimalFormatter类,但是由于它通过double进行操作-损失了大量精度。 那么,我该怎么办呢?
120 java  parsing  bigdecimal 

21
将秒值转换为小时分钟秒?
我一直在尝试将秒值(在BigDecimal变量中)转换为editText之类的字符串,例如“ 1小时22分33秒”或类似的内容。 我已经试过了: String sequenceCaptureTime = ""; BigDecimal roundThreeCalc = new BigDecimal("0"); BigDecimal hours = new BigDecimal("0"); BigDecimal myremainder = new BigDecimal("0"); BigDecimal minutes = new BigDecimal("0"); BigDecimal seconds = new BigDecimal("0"); BigDecimal var3600 = new BigDecimal("3600"); BigDecimal var60 = new BigDecimal("60"); (我有一个roundThreeCalc,它是以秒为单位的值,所以我尝试在这里进行转换。) hours = (roundThreeCalc.divide(var3600)); myremainder = (roundThreeCalc.remainder(var3600)); minutes …

6
如何打印格式化的BigDecimal值?
我有一个BigDecimal字段amount代表钱,我需要打印其值在浏览器中一样的格式$123.00,$15.50,$0.33。 我怎样才能做到这一点? (我看到的唯一简单的解决方案是floatValue从中获取分数BigDecimal,然后使用它NumberFormat来使小数部分达到两位数的精度)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.