1。之所以关注这一点,是因为一个问题:牛客网上的max-points-on-a-line题目是这样描述的:给定一个二维平面上的n个点,求位于该线上的最大点数同一条直线。大意是给我一些点的X和Y坐标,找到点数最多的直线,输出这条直线上的点数。所以我输入了以下代码:importjava.util.HashMap;importjava.util.Map;//classPoint{//intx;//inty;//Point(inta,intb){x=A;y=b;}//}publicclassSolution{publicintmaxPoints(Point[]points){if(points.length<=2){returnpoints.length;}最大整数=2;for(inti=0;i 第31位(由mask*{@code0x80000000})表示浮点数*的符号。*Bits30-23(由mask*{@code0x7f800000}选择的位)表示指数。*Bits22-0(由掩码*{@code0x007fffff})选择的位表示浮点数的重要性和(有时称为*尾数)。** 如果参数是正无穷大,结果是*{@code0x7f800000}。** 如果参数是负无穷大,结果是*{@code0xff800000}。** 如果参数是NaN,结果是{@code0x7fc00000}.** 在所有情况下,结果都是一个整数,当将其提供给*{@link#intBitsToFloat(int)}方法时,将产生一个与{@codefloatToIntBits}*的参数(除了所有NaN值都折叠为单个*“规范”NaN值)。**@paramvalue一个浮点数。*@return表示浮点数的位。*/publicstaticintfloatToIntBits(floatvalue){intresult=floatToRawIntBits(value);//根据位字段的值、最大值//指数和非零尾数检查NaN。如果(((结果&FloatConsts.EXP_BIT_MASK)==FloatConsts.EXP_BIT_MASK)&&(结果&FloatConsts.SIGNIF_BIT_MASK)!=0)结果=0x7fc00000;returnresult;}这个文档比较长,我也查了其他资料。无穷大、负零和NaN(不是数字)的定义。在使用Java的过程中,通常会遇到一些特殊的浮点数让大家感到困惑。当浮点运算产生一个非常接近0的负浮点数时,就会产生“-0.0”,这个浮点数不能正常。我们可以输出一个Wave0.0和-0.0的数据:System.out.println(Float.floatToIntBits((float)0.0));System.out.println(Float.floatToIntBits((float)-0.0));System.out。println(Float.floatToRawIntBits(0.0f));System.out.println(Float.floatToRawIntBits((float)-0.0));Result:0-21474836480-2147483648也就是说存储-0.0其实就是0x80000000,我们熟悉Integer.MIN\_VALUE3。综上所述,java中浮点数的表示比较复杂,尤其是涉及到-0.0、NaN、正负无穷大的时候,不适合作为Map的key,因为可能不是符合我们的预期
