Tag: bigdecimal

使用stream添加BigDecimals

我有一个BigDecimals集合(在这个例子中是一个LinkedList ),我想将它们加在一起。 有没有可能为此使用stream? 我注意到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 values.forEach((value) […]

安全string转换为BigDecimal

我正在尝试从string中读取一些BigDecimal值。 比方说,我有这个string:“1,000,000,000.999999999999999”,我想从它得到一个BigDecimal。 有什么办法呢? 首先,我不喜欢使用stringreplace(replace逗号等)的解决scheme。 我觉得应该有一些整洁的格式化工为我做这个工作。 我已经find了一个DecimalFormatter类,但是当它通过双倍的操作 – 大量的精度丢失。 那么,我该怎么做呢?

BigDecimal setScale和round

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

将BigDecimal转换为整数

我有Hibernate方法返回给我一个BigDecimal。 我有另一个API方法,我需要通过该号码,但它接受整数作为参数。 我不能改变这两种方法的返回types或variablestypes。 现在如何将BigDecimal转换为Integer并将其传递给第二个方法? 有没有办法呢?

如何检查在Java中BigDecimalvariables== 0?

我在Java中有以下代码; BigDecimal price; // assigned elsewhere if (price.compareTo(new BigDecimal("0.00")) == 0) { return true; } 写if条件的最好方法是什么?

四舍五入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做到这一点? 还是有另一个更适合这个的类/库?

比较BigDecimal是否大于零

如何比较BigDecimal值是否大于零?

BigDecimal equals()与compareTo()

考虑简单的testing类: 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"); } } 你可以(有意识地)说x等于y (不是对象引用),但是当你运行这个程序时,下面的结果显示: false true 问题: […]

是否有JavaScript的十进制math库?

有没有一个成熟的图书馆做基于十进制的math,可能是任意的精度,在JavaScript中? 编辑:我想要这个信息的浮点相关问题的参考页面和二进制浮点不合适时使用的替代品: http : //floating-point-gui.de/

有没有一个相当于Java的BigDecimal的C ++?

我正在寻找一个可以做十进制浮点运算的C ++类。 通过http://speleotrove.com/decimal/浏览 ,有人写的各种类的链接,而不是维护。 挖掘decNumber ++的东西让我看到一些电子邮件,显示GCC最终会支持这个function。 (正式称为ISO / IEC TR 24733) 我正在寻找一些我可以用来替代float或double的东西,这是其他人在自己的项目中使用的东西。 希望开源。 谢谢! 编辑:我应该指出,我试图用这个来表示价格。 所以我需要EXACT小数,而不是大数小数。