Ada*_*der 1 java floating-point
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
}
}
Run Code Online (Sandbox Code Playgroud)
我试图让Float变量溢出但我没有得到那个结果,上面你可以看到我尝试导入一些库来查看是否会导致它发生,但最后它只是打印相同的数字前后我加1.
对于足够大的float
s,添加1
将不会执行任何操作:它们非常大,以至于它们会回到原始值.
要理解这一点,假设您存储的精度为5位小数的十进制值,并且您有1000000.如果添加1,您将得到1000001,但由于您只有五位数的精度,它会回到1000000 .
你必须添加更大的东西.
你可以做的是测试Math.nextUp(Float.MAX_VALUE) == Float.POSITIVE_INFINITY
,我怀疑你想要说服自己.