Java 的 BigDecimal 是与 C# 的 Decimal 最接近的数据类型吗?

根据这里的图表,Java中与C#等效的数据类型是 。DecimalBigDecimal

真的是这样吗?“大”序言是怎么回事?Java中似乎没有“小十进制”或“小十进制”(更不用说“MediumSizeDecimal”)。

不过,我必须说,那张图表是我在这个主题上发现的最清晰的东西。这里这里这里的其他链接对我来说就像暴风雨后的密西西比河一样清晰。


答案 1

真的是这样吗?

它们相似但不完全相同。更具体地说:Java版本可以表示C#版本可以表示的每个值,但事实并非如此。

“大”序言是怎么回事?

Java可以具有任意多的精度,因此可以任意大。如果你想做一个有一千个地方的精度,你就走在前面。BigDecimalBigDecimal

相比之下,C#具有固定的大小;它占用128位,并为您提供28位小数精度。decimal

更准确地说:这两种类型都为您提供了表单的编号

+/- someInteger / 10 ^ someExponent

在 C# 中,是一个 96 位无符号整数,并且是介于 0 和 28 之间的整数。someIntegersomeExponent

在 Java 中,是任意大小的,并且是有符号的 32 位整数。someIntegersomeExponent


答案 2

是的 - 这是相应的类型。

由于您在C#之后使用Java- 不要太惊讶于发现这样的细微差别 - 或者当没有简单的方法来做一些“容易”做C#的事情时,你会太沮丧。我首先想到的是int & int?- 在Java中,你只使用int和整数。

C#有幸在Java之后出现,所以很多(我主观上认为的)糟糕的决定都被修正/简化了。此外,C#是由Andres Hejlsberg(他可以说是现存最好的编程语言设计师之一)设计的,并且与Java不同,它定期“更新”(你可能目睹了自2000年以来添加到C#中的所有东西 - 完整列表)