Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么BigDecimal';s比例不是大整数?_Java_Biginteger_Bigdecimal - Fatal编程技术网

Java 为什么BigDecimal';s比例不是大整数?

Java 为什么BigDecimal';s比例不是大整数?,java,biginteger,bigdecimal,Java,Biginteger,Bigdecimal,为什么BigDecimal的scale字段不是biginger?我认为目前这可能没有意义,因为可能永远不会执行小数位数太多的计算,但将来使用BigInteger?BigDecimal的小数位数是它存储在小数点右侧的位数,这对未来是否有意义。这是一个内存量,因为这些数字实际上是被存储的,这是一个工作量,因为对BigDecimal的大多数操作都必须对所有这些数字进行操作 使用一个需要占用大量内存或工作量的BigDecimal来计算整数永远都不是一个好主意,所以整数被用来进行缩放。这与int用于字符串

为什么
BigDecimal
scale
字段不是
biginger
?我认为目前这可能没有意义,因为可能永远不会执行小数位数太多的计算,但将来使用
BigInteger

BigDecimal的小数位数是它存储在小数点右侧的位数,这对未来是否有意义。这是一个内存量,因为这些数字实际上是被存储的,这是一个工作量,因为对BigDecimal的大多数操作都必须对所有这些数字进行操作

使用一个需要占用大量内存或工作量的BigDecimal来计算整数永远都不是一个好主意,所以整数被用来进行缩放。这与int用于字符串长度和集合大小等的原因相同


在少数情况下,合理数量的内存或工作不适合int,它肯定适合long。例如,long用于文件大小和位置。BigInteger从来都不是必需的。

BigDecimal的小数位数是它存储在小数点右侧的位数。这是一个内存量,因为这些数字实际上是被存储的,这是一个工作量,因为对BigDecimal的大多数操作都必须对所有这些数字进行操作

使用一个需要占用大量内存或工作量的BigDecimal来计算整数永远都不是一个好主意,所以整数被用来进行缩放。这与int用于字符串长度和集合大小等的原因相同


在少数情况下,合理数量的内存或工作不适合int,它肯定适合long。例如,long用于文件大小和位置。从来都不需要BigInteger。

不需要。这些类现在已经足够慢了。任何减慢它们速度的行为都会被认为是有害的。你真的需要小数点后超过2147483647(超过20亿)位吗?@Tunaki这是一个理论问题。就像我现在说的,可能没有人需要小数点后有那么多的数字,但也许在将来,
BigDecimal
是我所理解的仅受可用内存限制的,那么这个比例限制似乎与Java 10相反,我们可能会得到值类型。甚至包含大于
int
用于索引的数组。所以他们可能会考虑大修小数。通常,它们可以使用任何值类型而不是int。可能是无符号128位整数。这仍然比BigDecimal好(快)。BigDecimal是基于BigInteger的,它不能容纳超过20亿位的数字。使用BigInteger作为刻度将使代码速度大大降低,所有不需要20亿十进制数字(超过99.99%)的人都将不得不为极少数可能需要它的人而受苦。不。这些课程和现在一样慢。任何减慢它们速度的行为都会被认为是有害的。你真的需要小数点后超过2147483647(超过20亿)位吗?@Tunaki这是一个理论问题。就像我现在说的,可能没有人需要小数点后有那么多的数字,但也许在将来,
BigDecimal
是我所理解的仅受可用内存限制的,那么这个比例限制似乎与Java 10相反,我们可能会得到值类型。甚至包含大于
int
用于索引的数组。所以他们可能会考虑大修小数。通常,它们可以使用任何值类型而不是int。可能是无符号128位整数。这仍然比BigDecimal好(快)。BigDecimal是基于BigInteger的,它不能容纳超过20亿位的数字。使用BigInteger作为标尺将使代码速度大大降低,所有不需要20亿十进制数字(超过99.99%)的人都将不得不为极少数可能需要它的人而受苦。