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-308
到1e308
的范围。
如果我必须将其表示为 1e2,则不知道该类型是什么。以上是关于java中的科学记数法抽象的主要内容,如果未能解决你的问题,请参考以下文章