BigDecimal.value0f(0.00) 放入BigDecimal类型0.1会丢失精度嘛
时间: 2023-10-17 16:14:43 浏览: 44
是的,将0.1放入BigDecimal类型时会丢失精度。这是因为在Java中,0.1被表示为一个二进制无限循环小数,而BigDecimal是使用基于十进制的表示方式,因此无法完全准确地表示这个二进制小数。如果需要进行精确计算,建议使用BigDecimal的字符串构造函数,例如:
```
BigDecimal bd = new BigDecimal("0.1");
```
这样可以确保精度不丢失。
相关问题
BigDecimal.valueOf(1) BigDecimal.ONE
BigDecimal.valueOf(1)和BigDecimal.ONE都是用来创建表示数字1的BigDecimal对象的方法。它们的作用是相同的,都可以用于创建一个精确的表示数字1的BigDecimal对象。这两种方法的区别在于语法和使用方式。BigDecimal.valueOf(1)是一个静态方法,可以直接通过类名调用,参数是一个整数、长整数、浮点数或双精度浮点数。而BigDecimal.ONE是BigDecimal类的一个静态成员,表示数字1的BigDecimal对象。它可以通过类名和成员名称来访问。使用哪种方法可以根据个人喜好和代码的需求来选择。
new BigDecimal和BigDecimal.valueOf
new BigDecimal() 和 BigDecimal.valueOf() 都是创建 BigDecimal 对象的方法,但它们之间有一些区别。
new BigDecimal() 是通过使用 BigDecimal 的构造函数来创建对象的。例如,可以使用 new BigDecimal("10.5") 来创建一个 BigDecimal 对象,该对象的值为 10.5。
BigDecimal.valueOf() 是一个静态方法,它返回一个 BigDecimal 对象,该对象包含传递给该方法的原始值。例如,可以使用 BigDecimal.valueOf(10.5) 来创建一个 BigDecimal 对象,该对象的值也为 10.5。
区别在于,new BigDecimal() 可以接受 String 类型的参数,而 BigDecimal.valueOf() 可以接受 int、long、float、double 或 String 类型的参数。另外,BigDecimal.valueOf() 有一个优化,如果参数是 int 或 long 类型的数值,它会返回一个预定义的对象,从而提高性能。