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

时间:2014-04-11 16:10:42

标签: c# java decimal bigdecimal complex-data-types

根据图表here,Java到C#的十进制的等效数据类型是" BigDecimal"。

这真的是这样吗?什么" Big"前言?它似乎不是一个" SmallDecimal"或者" LittleDecimal" (更不用说#34; MediumSizedDecimal")用Java。

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

2 个答案:

答案 0 :(得分:25)

  

这真的是这样吗?

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

  

" Big"是什么?前言?

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

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

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

+/- someInteger / 10 ^ someExponent

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

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

答案 1 :(得分:16)

是的 - 这是相应的类型。

因为你在C#之后使用Java - 不要太惊讶于发现这样的小细微差别 - 或者当没有简单的方法去做一些事情时会感到很沮丧"轻松&# 34;做C#。我想到的第一件事就是int&诠释? - 在Java中,你只需使用int和Integer。

C#在追随Java之后有了很大的优势,所以很多(我主观看到的)糟糕的决定已被修复/简化。此外,它有助于C#由Andres Hejlsberg(可以说是最好的编程语言设计师之一)设计,并定期更新"与Java不同(您可能目睹了自2000年以来添加到C#的所有内容 - complete list