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

根据这里的图表,Java到C#的Decimal中的等效数据类型是“BigDecimal”。

这真的是这样吗? 怎么了“大”序言? 在Java中似乎没有“SmallDecimal”或“LittleDecimal”(更不用说“MediumSizedDecimal”)。

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

是的 – 这是相应的类型。

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

C#很有可能在Java之后出现,所以很多(我主观上看到的)糟糕的决定已被修复/简化。 此外,它有助于C#由Andres Hejlsberg (可以说是最好的编程语言设计师之一)设计并且经常“更新”而不像Java(您可能目睹了自2000年以来添加到C#的所有内容 – 完整列表 )

这真的是这样吗?

它们相似但不完全相同。 更具体一点:Java版本可以表示C#版本可以包含的每个值,但事实恰恰相反。

怎么了“大”序言?

Java BigDecimal可以具有任意的精度,因此可以任意大 。 如果你想制作一个具有千位精度的BigDecimal,你就可以前进了。

相比之下,C#十进制具有固定的大小; 它占用128位,给你28位小数的精度。

更确切地说:两种类型都为您提供表格编号

+/- someInteger / 10 ^ someExponent 

在C#中, someInteger是96位无符号整数, someExponent是0到28之间的整数。

在Java中, someInteger具有任意大小, someExponent是带符号的32位整数。