java - 短到双值

标签 java double type-conversion unsigned short

我在 Java 中将 short 值转换为 double 时遇到问题。我有表示为 16 位无符号值(java 中的 short)的实数。当我阅读它们时,我想将它们转换为 double,但是在执行 (double) value 后,我得到了错误的结果,例如在一种情况下使用System.out.println(value) 我得到 0.0,但结果应该是 0.00034

 double[][] dataD = null;
 short[][] dataS = null;
 try {
    fits = new Fits(path); // here im readinf fits file
    switch(bitpix) { // bitpix contains information about size of data
       case 16: dataS = ((short[][]) fits.getHDU(0).getKernel()); break;
       ...
    }
 } catch (FitsException e) {}
 catch (IOException e) {}
 for( int i = 0; i < dataS.length;  i++ )
    for( int j = 0 ; j <dataS[0].length ; j++ )  {
       switch(bitpix) {
          case 16: dataD[i][j] = 0.0; 
             if( dataS[i][j] < 0 ) dataD[i][j] = dataS[i][j] + 32768;
             else dataD[i][j] = dataS[i][j] ;   
          break;
       }

最佳答案

我假设您在将短数字转换为double之前先对其进行除法。不要这样做

short s = 123;
double d = (double) (s / 100);

相反

short s = 123;
double d = (double) (s / 100.0);

避免整数除法。

关于java - 短到双值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11538028/

相关文章:

java - 支持 JAX-RS 中的查询参数

java - 简单的 Java 代码,无法创建 C++ 等效代码(私有(private)静态成员和公共(public)访问器方法)

java - BeanUtils 日期转换问题

c - 将 c short 分配给 Ada short_integer

c++ - bool 数组在衰减方面的处理方式不同吗?

java - 线程在 Mule 1.3 中如何工作?

java - 如何使用 map 根据不同参数搜索员工对象列表?

c - 从双变量获得奇怪的结果 (C)

c# - 带有两个小数点的字符串的 Double.TryParse

c# - 在 C# 中需要转换基值类型时