【问题标题】:java: how can I convert double precision numbers to decimaljava:如何将双精度数字转换为十进制
【发布时间】:2012-05-24 08:03:17
【问题描述】:

我想将双精度数字转换为十进制。

例如我有 23.43,双精度值将是(使用 matlab):174 71 255 122 20 110 55 64 现在有了这个,我怎样才能编写一个给我 23.43 的 java 程序?

这是matlab中双精度的计算:

MATLAB 根据 IEEE 标准 754 为双精度构造双精度数据类型。任何存储为双精度值的值都需要 64 位,格式如下表所示:

位 用法

63 符号(0 = 正,1 = 负)

62 到 52 指数,偏差 1023

51 到 0 数字 1.f 的分数 f

【问题讨论】:

  • 你以什么奇怪的方式将 23.43 转换为它给你带来的怪物? :-)
  • 174 71 255 122 20 110 55 64 是什么?
  • java程序中为什么不能使用23.43?
  • matlab 给了我那个数字,我想转换它
  • @melisazand 我认为问题在于您如何在 matlab 中获得“那个”而不是简单的 23.43。您应该尝试在 matlab 中修复输出,而不是在 java 中。

标签: java matlab decimal double-precision


【解决方案1】:
long l = Double.doubleToLongBits(double);
double d = Double.longBitsToDouble(long);

【讨论】:

  • 看起来你拥有的是一个字节数组。您需要先将数字转换为 long 才能使用此答案,它不应该很复杂。
  • 我尝试转换 -22 现在我收到 4.668931E18 ,首先我将字节转换为长,然后将双倍转换为长,但是这个数字是多少?
猜你喜欢
  • 1970-01-01
  • 2018-02-28
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
相关资源
最近更新 更多