Lucene随笔 您所在的位置:网站首页 stata中double转换为long Lucene随笔

Lucene随笔

2024-06-26 16:57| 来源: 网络整理| 查看: 265

Lucene: 6.5.1

在DocValue中存储数值类类型的数据时,往往会将double/float转换成Long进行存储。 其中可以参考Class NumbericUtils。我们以double2Long为示例:

public static long doubleToSortableLong(double value) { return sortableDoubleBits(Double.doubleToLongBits(value)); } public static long sortableDoubleBits(long bits) { return bits ^ bits >> 63 & 9223372036854775807L; } public static long doubleToLongBits(double value) { long result = doubleToRawLongBits(value); // Check for NaN based on values of bit fields, maximum // exponent and nonzero significand. if ( ((result & DoubleConsts.EXP_BIT_MASK) == DoubleConsts.EXP_BIT_MASK) && (result & DoubleConsts.SIGNIF_BIT_MASK) != 0L) result = 0x7ff8000000000000L; return result; } 1)将double转换成LongBits

doubleToLongBits方法根据 IEEE 754 浮点双精度格式 (“double format”) 位布局,返回指定浮点值的表示形式。 输入:双精度浮点数 输出:表示浮点数的位

返回值的组成: ①第1位是数符s,s=1表示负数,s=0表示正数。 ②第2-12位为阶码E ③第13-64位为尾数M

示例

22.8125等于二进制10110.1101 22.8125—>10110.1101–>1.01101101* 2^4 双精度:S=0,E=4+1023=1027(10位) M=0.01101101 (53位) ans=0 1000000011 01101101000000000000000000000000000000000000000000000

2)转化成SortableLong

操作如代码所示



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有