BigDecimal是一个具有任意精度的有符号十进制数字的大整数。
它包含一个32位的整数和一个未标定的十进制值。它被定义在java.math类中。它被用于产品价格和科学计算中
Float用于存储32位浮点数字。
本教程告诉你如何在java中把BigDecimal转换为Float。
如何在java中把bigdecimal转换为Float?
BigDecimal有一个方法floatValue
,用于返回浮点数。
它根据BigDecimal中数值的大小返回Float.NEGATIVE_INFINITY或Float.POSITIVE_INFINITY。
下面是一个语法
public float floatValue()
下面是一个程序代码的例子
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
BigDecimal order = new BigDecimal(789.124);
System.out.println(order); //789.124000000000023646862246096134185791015625
System.out.println(order.getClass()); // class java.lang.BigDecimal
Float d = order.floatValue();
System.out.println(d); //789.124
System.out.println(d.getClass()); //class java.lang.Float
}
}
输出:
789.124000000000023646862246096134185791015625
class java.math.BigDecimal
789.124
class java.lang.Float
如何在java中把Float转换为BigDecimal?
本节向你展示了在java中把Float转换成BigDecimal的方法,我们可以通过两种方式来实现
-
BigDecimal构造函数。
通过构造函数,你可以转换为字符串或双倍参数。 将浮点数转换为字符串并返回BigDecimal对象。 同样,由于浮点数会自动转换为双倍数,所以你可以向构造函数传递双倍参数
public BigDecimal(String val) public BigDecimal(Double val)
-
valueOf方法:该静态方法接收Float值并返回BigDecimal对象。
public static BigDecimal valueOf(double val)
下面是一个完整的程序代码
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
Float f = 467.123f;
System.out.println(f); //467.123
System.out.println(f.getClass()); //class java.lang.Float
// using String constructor
BigDecimal order = new BigDecimal(f.toString());
System.out.println(order); //467.123
System.out.println(order.getClass()); //class java.lang.BigDecimal
// using double constructor
BigDecimal order1 = new BigDecimal(f);
System.out.println(order1); //467.12298583984375
System.out.println(order1.getClass()); //class java.lang.BigDecimal
// using valueOf method
BigDecimal order2 = BigDecimal.valueOf(f);
System.out.println(order2); //467.12298583984375
System.out.println(order2.getClass()); //class java.lang.BigDecimal
}
}
输出:
467.123
class java.lang.Float
467.123
class java.math.BigDecimal
467.12298583984375
class java.math.BigDecimal
467.12298583984375
class java.math.BigDecimal
在程序中,精度是一个长值,你可以用下面的值来限制精度或十进制值。
下面是一些步骤
- 创建一个BigDecimal对象
- 将
Double
,MathContext
对象传递给构造函数 ``java public BigDecimal(double val, MathContext mc)
- `MathContext` takes a precision value which is of total digits before and after dot (.)operator and pass `RoundingMode.HALF_EVEN`
Here is an example code to convert float to bigdecimal with 3 decimal places.
```java
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
public class BigDecimalTest {
public static void main(String[] args) {
Float f = 467.123f;
System.out.println(f); //467.123
System.out.println(f.getClass()); //class java.lang.Float
// using MathContext method to limit 2 decimal places
BigDecimal order = new BigDecimal(f.floatValue(),
new MathContext(6, RoundingMode.HALF_EVEN));
System.out.println(order); //467.123
System.out.println(order.getClass()); //class java.lang.BigDecimal
}
}
摘要
学习了在java中将BigDecimal转换为Float的多种方法。 同时,将bigdecimal转换为Float的结果是增加了精度值,并试图避免货币的计算。