我正在阅读文件,用java中的C浮点数写。
myFileRead(bptr, 4, n_row, stream);
for (int i=0;i<n_row;i++)
ptr.set(i,Float.intBitsToFloat(ByteBuffer.wrap(bptr,i*4,4)
.order(ByteOrder.LITTLE_ENDIAN).getInt()));
C输出:
input[j] -0.0922103971 float
wr[j] 0.00706708990 float
Java输出:
input.get(j) = {Float@602} "-0.0922104"
wr.get(j) = {Float@603} "0.00706709"
Java也给了我这个:
input.get(j).doubleValue() = -0.09221039712429047
wr.get(j).doubleValue() = 0.0070670899003744125
然后我需要将这两个值相乘,并且它不会以两种方式匹配。
(input.get(j) * wr.get(j)) = -6.5165915E-4
(input.get(j).doubleValue() * wr.get(j).doubleValue()) = -6.516591662265869E-4
C输出:
input[j]*wr[j] -0.000651659153 float
然后错误累积,然后转换为()循环
for(j = 0; j < input_size; j++)
z += input.get(j) * wr.get(j);
output.set(i, z);
输出是:
C: -2.99740553
Java: -2.7654826641082764
看起来像java Float太短(那么它有多重值?)和Double太长了。如何使Java输出与C输出匹配?