以更易读的格式显示双精度科学记数法

Posted

技术标签:

【中文标题】以更易读的格式显示双精度科学记数法【英文标题】:Displaying a scientific notation double in a more readable format 【发布时间】:2012-04-08 22:12:43 【问题描述】:

我正在通过第三方库从 PLC 读取一个值,但是当保存为双精度值时,该值似乎采用科学计数法。

PLC 中的值是1.234 但是,在调试应用程序时,存储在双精度中的值是5.27326315571927E-315

我将其显示在标签中,但我想将其显示为 1.234 而不是科学记数法。

如何转换?

【问题讨论】:

仅供参考:5.27326315571927E-315 != 1.234 。是~0 我猜你需要显示代码,但听起来你正在将浮点数放入双精度或类似的东西 【参考方案1】:

作为一个疯狂的猜测,我认为你应该从你的库中读取 4 个字节(浮点数)而不是双倍(8 个字节)。

因为5.27326315571927E-315几乎为零。

double d = 5.27326315571927E-315;
byte[] b = BitConverter.GetBytes(d);
float f = BitConverter.ToSingle(new byte[]  b[0], b[1], b[2], b[3] , 0); 

f 现在是1.2345

【讨论】:

有趣!我将其更改为将值转换为浮点数,现在得到的值为 1.234。他们提供的示例代码状态转换为双精度,我已经在以前的项目中做到了这一点,它运行良好......但这次不是!谢谢!

以上是关于以更易读的格式显示双精度科学记数法的主要内容,如果未能解决你的问题,请参考以下文章

将以秒为单位的时间间隔转换为更易读的形式

Selenium 2自动化测试实战36(更易读的测试报告)

laravel 表单模型绑定 - 日期格式

如何将 INSERT sql 语句变成更易读的形式?

如何将这种类型的数据 <hdf5 object reference> 转换为 python 中更易读的东西?

JDBC:jtds getString() 以科学计数法返回双精度数