import java.lang.*;
import java.math.*;
public class CFloatExample
{
// --------------------------------------------------------------------------------
// Name: main
// Abstract: This is where the program starts.
// --------------------------------------------------------------------------------
public static void main( String astrCommandLine[] )
{
// Declare float variables
float fltMinimum = 0;
float fltMaximum = 0;
// Set to min/max value of float
fltMinimum = -3.4E38F;
fltMaximum = 3.4E38F;
// Print min/max values for float
System.out.print( "float Data Type------------------------------------------------\n" );
System.out.print( "\tMinimum: " + fltMinimum + "\n" );
System.out.print( "\tMaximum: " + fltMaximum + "\n" );
System.out.print( "\n" ); // Blank line
// Confirm by subtracting and adding one to int (integer)
fltMinimum -= 1.0E0F;
fltMaximum += 1.0E0F;
System.out.print( "float Confirmation\n" );
System.out.print( "\tMinimum: " + fltMinimum + "\n" );
System.out.print( "\tMaximum: " + fltMaximum + "\n" );
System.out.print( "\n" ); // Blank line
}
}
我试图让 Float 变量溢出,但我没有得到那个结果,上面你可以看到我尝试导入一些库以查看是否会导致它发生,但最后它只是打印相同的数字在我加 1 之前和之后。
最佳答案
对于足够大的 float
,添加 1
不会做任何事情:它们太大以至于它们会四舍五入到原来的值。
为了理解这一点,假设您要存储一个精度为 5 位小数的十进制值,并且您有 1000000。如果您加 1,您将得到 1000001,但由于您只有五位精度,四舍五入为 1000000。
你必须添加更大的东西。
您可以做的是测试 Math.nextUp(Float.MAX_VALUE) == Float.POSITIVE_INFINITY
,我怀疑这是您想说服自己的。
关于java - Java 中的溢出 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27535280/