2

Java でのshort値の変換に問題があります。私は16ビットの符号なし値( Javaで)doubleとして表される実数を持っています。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;
       }
4

2 に答える 2

3

に変換する前に、短い数値を分割していると思いますdouble。しないでください

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

代わりに

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

整数除算を避けるため。

于 2012-07-18T09:23:00.717 に答える
2

これを試して :

Short sObj = new Short("10");
double d = sObj.doubleValue();

これで問題ありません。

于 2012-07-18T09:19:00.677 に答える