簡體   English   中英

Java的BigDecimal是不是最接近C#的Decimal對應的數據類型?

[英]Is Java's BigDecimal the closest data type corresponding to C#'s Decimal?

根據此處的圖表,Java 中與 C# 的Decimal等效的數據類型是BigDecimal

真的是這樣嗎? “大”序言怎么了? Java 中似乎沒有“SmallDecimal”或“LittleDecimal”(更不用說“MediumSizedDecimal”)了。

不過,我必須說,這張圖表是我在這個主題上找到的最清晰的東西; 這里這里這里的其他鏈接對我來說就像暴風雨過后的密西西比河一樣清晰。

這真的是這樣嗎?

它們相似但不完全相同。 更具體地說:Java版本可以表示C#版本可以包含的每個值,但事實恰恰相反。

怎么了“大”序言?

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

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

更確切地說:兩種類型都為您提供表格編號

+/- someInteger / 10 ^ someExponent

在C#中, someInteger是96位無符號整數, someExponent是0到28之間的整數。

在Java中, someInteger具有任意大小, someExponent是帶符號的32位整數。

是的 - 這是相應的類型。

因為你在C#之后使用Java - 不要太驚訝於發現這樣的細微差別 - 或者當沒有簡單的方法來做一些“容易”做C#的事情時會感到非常沮喪。 我想到的第一件事是int&int? - 在Java中你只需要使用int和Integer。

C#很有可能在Java之后出現,所以很多(我主觀看到的)糟糕的決定已被修復/簡化。 此外,它有助於C#由Andres Hejlsberg (可以說是最好的編程語言設計師之一)設計並且經常“更新”而不像Java(您可能目睹了自2000年以來添加到C#的所有內容 - 完整列表

C# Decimal 和 java BigDecimal 類型不是等價的。 BigDecimal 是任意精度。 它可以從字面上表示任何精度的任何數字(直到你用完 RAM)。

C# 十進制是浮點數但“固定長度”(128 位)。 大多數時候,這就足夠了! Decimal 比 BigDecimal 快得多,所以除非你真的需要很高的精度,否則它是一個更好的選擇。

您可能想要的 Java 是https://github.com/tools4j/decimal4j或類似的庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM