java中的科学记数法抽象

Posted

技术标签:

【中文标题】java中的科学记数法抽象【英文标题】:scientific notation abstraction in java 【发布时间】:2010-12-09 05:59:03 【问题描述】:

是否有一个java类抽象来表示科学数字(e.g. the number, 10 power modulus),这样我就可以在它们上面做简单的操作,比如乘法或除法。

注意:在此处寻找类似于 Fraction 的内容。

【问题讨论】:

我认为那些被称为“双重”。你认为你需要什么额外的抽象?我当然可以这样写:双模 = 3.0e7;你还有什么想法? 【参考方案1】:

正如 Emil 所说,BigDecimal 可以帮助您。它没有允许您输入双尾数和 int 指数的构造函数。您可以扩展该类以创建一个新的构造函数,或者您可以定义一个 DecimalFormat。我认为 DecimalFormat 类会做一些你想要的。它允许您如何定义数字的“外观”。您需要使用字符串定义格式,教程是 http://download.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

您必须定义科学数字的格式,调用yourDecimalFormat.parse(yourStringtoBecomeScientificNumber),它会为您提供一个数字,然后将其转换为 BigDecimal 以对其进行算术运算。

另请注意,这应该允许您强制一定数量的有效数字或小数点左侧的数字。

【讨论】:

【参考方案2】:

我没有得到你的例子。如果你需要不同类型的数字表示,那么你可以通过扩展抽象类Number来做到这一点。也看看BigDecimals。我想这就是你正在寻找的为。

【讨论】:

【参考方案3】:

您可以将数字写为 number+e​​+exponent,例如: 1e2 而不是 100。 乘法和除法应该适用。

【讨论】:

请注意,您仅限于1e-3081e308 的范围。 如果我必须将其表示为 1e2,则不知道该类型是什么。

以上是关于java中的科学记数法抽象的主要内容,如果未能解决你的问题,请参考以下文章

Java中的紧凑数字格式化行为(在十进制和科学记数法之间自动切换)

Java中如何使用科学计数法

计算机科学中的术语多路复用是啥意思?

如何使java中double类型不以科学计数法表示

如何使java中double类型不以科学计数法表示

科学理论的逻辑基础