Java 为啥不提供decimal

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 为啥不提供decimal相关的知识,希望对你有一定的参考价值。

参考技术A Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。
BigDecimal一共有4个构造方法:
BigDecimal(int) 创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。追问

谢谢答复。可是我想知道为什么不提供像int、double之类的基本类型,可以用 + - * / 可以直接操作。用BigDecimal的方法操作实在不自然,尤其是复杂的计算表达式。像C#中就有decimal作为基本类型,非常好用。我不知道Java已经发展到这么高了,为什么不提供精确数据的decimal基本数据类型?

谢谢答复。可是我想知道为什么不提供像int、double之类的基本类型,可以用 + - * / 可以直接操作。用BigDecimal的方法操作实在不自然,尤其是复杂的计算表达式。像C#中就有decimal作为基本类型,非常好用。我不知道Java已经发展到这么高了,为什么不提供精确数据的decimal基本数据类型?

追答

你要进行+-*/操作,先操作,再转换成decimal

参考技术B 你指的是BigDecimal啊,java里面有的。追问

谢谢答复。可是我想知道为什么不提供像int、double之类的基本类型,可以用 + - * / 可以直接操作。用BigDecimal的方法操作实在不自然,尤其是复杂的计算表达式。像C#中就有decimal作为基本类型,非常好用。我不知道Java已经发展到这么高了,为什么不提供精确数据的decimal基本数据类型?

追答

Java有float和double,但是数据有边界,如果碰到更大的数据,就只能用bigdecimal了。这是他们的思路,没有什么为什么,希望你了解了。

Decimal类型的字段为啥不能为Null

参考技术A 数据库中最好不要有null,最好设置默认为0或者空字符,这是基本的数据库常识本回答被提问者采纳

以上是关于Java 为啥不提供decimal的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Java 8 接口方法中不允许使用“final”?

为啥当类包含任何参数化构造函数时编译器不提供默认构造函数? [复制]

Java 的BigDecimal

Java - 为啥没有基于返回类型的方法重载?

我们为啥要用Java?

为啥匕首图可以在 java 中工作,但在 Kotlin 中却说在我提供时缺少提供?