Java double 避免科学记数法但保留数据类型
Posted
技术标签:
【中文标题】Java double 避免科学记数法但保留数据类型【英文标题】:Java double avoid scientific notation but keep the data type 【发布时间】:2020-08-20 16:50:13 【问题描述】:如何在 Java 中更改 double 的科学记数法但保留数据类型?我知道DecimalFormat
,我不想打印要输出的值。我想将它作为双重而不是科学记数法沿管道传递。例如,我希望 2000000000000
作为双精度而不是 2.0E12
的形式。到目前为止,我发现的每个解决方案都将其转换为长小数或大小数或字符串。是否可以将其保留为双精度?
【问题讨论】:
“沿着管道传递”是什么意思?只要 Java 中的值“保持”不变,位模式仍然是相同的(1000.0
与 10e2
相同,1e3
与 1000e0
相同)。科学记数法只是一种(反)序列化格式。
@Turing85 在管道的最后,它被发送到一个 html 页面并显示为科学计数法。我无权访问管道的那部分,所以我不能在那里更改它。我想在它生成时更改它。
那你就不能保留为double
。反序列化值的一方决定了格式。
没有。 double
的位模式保持不变。反序列化double
(即将double
转换为String
)的过程会改变它。
所以你试图解决一个问题,你不负责。将double
转换为HTML 字符串的人负责输出格式。
【参考方案1】:
double
不编码任何格式信息,只编码值。默认情况下,格式化由 Double.toString 控制,或者将值插入 HTML 页面的代码可能正在使用格式化程序。
一种选择是将您的double
替换为带有double
字段但具有执行所需操作的toString 方法的包装类的实例。要进行算术运算,请访问double
字段。 HTML 页面管道,找到不是标准类之一的引用变量,可能会调用其 toString 来格式化值。
【讨论】:
如果您可以将任意对象传递给 HMTL 管道,就像建议的包装器一样,您也可以将格式化的字符串传递给它。以上是关于Java double 避免科学记数法但保留数据类型的主要内容,如果未能解决你的问题,请参考以下文章