有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    IEEE-754二进制64格式:

    s_eee_eeee_eeee_mmmm_mmmm_mmmm_mmmm_mmmm_mmmm_mmmm_mmmm_mmmm_mmmm_mmmm_mmmm_mmmm
    

    (1s;3×4−1=11es;64−3×4=52ms)

    ,及其算法:

    • 如果e >000_0000_0000<111_1111_1111:解释为(-1)s×2e−平衡器:1023×(基:1+m×2−一号推进器:52号。(这些是正常数字。)

    • 如果e =000_0000_0000:除了base:1base:0ee +1之外,执行与上一行相同的操作。(这些是低于正常值的数字,但零不是低于正常值/正常值。)

    • 如果e =111_1111_1111m =0000...0000:解释为(-1)s×无穷大

    • 如果e =111_1111_1111m <>0000...0000:解释为NaN。(Btwbtw:因此有2×(252−1)NaN、cf#Quiet NaN&^{}。)

    因此:

    • 它可能的最小正数是0_000_0000_0000_0000_..._0001^{}(也是.NET的^{}))(一个次正常数)

    • 它的最小可能正正规数是0_000_0000_0001_0000_..._0000^{}


    附录:

    MIN_VALUE计算:

    (-1)s:0×2(e:0+1)−平衡器:1023×(底座:0+m:1×2−一级推进器:52

    =1×2−1022×2−52

    =2−1074({a6})

    ,和MIN_NORMAL计算:

    (-1)s:0×2e:1−平衡器:1023×(底座:1+m:0×2−一级推进器:52

    =1×2−1022×1

    =2−1022

  2. # 2 楼答案

    为简单起见,解释只考虑正数。

    两个相邻的标准化浮点数'x1'和'x2'之间的最大间距为2 * epsilon * x1(标准化浮点数的间距不是均匀的,而是对数间隔的)。这意味着,当实数(即“数学”数)四舍五入为浮点数时,最大相对误差epsilon,这是一个称为机器ε或unit roundoff的常数,对于双精度,其值为2^-52(近似值2.22e-16)

    小于Double.MIN_NORMAL的浮点数称为次正常数,它们均匀地填充0和Double.MIN_NORMAL之间的间隙。这意味着涉及次正常值的计算可能导致不太准确的结果。当结果较小时,使用次正常值会使计算的精度降低得更慢

  3. # 3 楼答案

    答案可以在IEEE specification of floating point representation中找到:

    For the single format, the difference between a normal number and a subnormal number is that the leading bit of the significand (the bit to left of the binary point) of a normal number is 1, whereas the leading bit of the significand of a subnormal number is 0. Single-format subnormal numbers were called single-format denormalized numbers in IEEE Standard 754.

    换句话说,Double.MIN_NORMAL是可以表示的最小数字,前提是二进制点前面有一个1(在十进制系统中称为小数点)。而Double.MIN_VALUE基本上是在没有此约束的情况下可以表示的最小数字