This is right. The precision that you are asking for has no meaning.
foreach (-2.0,-1.9,-1.5,-1.1,-1.0,-0.9,-0.5,-0.1,-0)
{
printf("string=%5s digits=%9f, float2big=%24.16e\n", $_, $_, $_);
}
__END__
prints:
string= -2 digits=-2.000000, float2big=-2.0000000000000000e+000
string= -1.9 digits=-1.900000, float2big=-1.8999999999999999e+000
string= -1.5 digits=-1.500000, float2big=-1.5000000000000000e+000
string= -1.1 digits=-1.100000, float2big=-1.1000000000000001e+000
string= -1 digits=-1.000000, float2big=-1.0000000000000000e+000
string= -0.9 digits=-0.900000, float2big=-9.0000000000000002e-001
string= -0.5 digits=-0.500000, float2big=-5.0000000000000000e-001
string= -0.1 digits=-0.100000, float2big=-1.0000000000000001e-001
string= 0 digits= 0.000000, float2big= 0.0000000000000000e+000
Update:Well Ooops.....
Somehow there is a precision problem. Sorry I couldn't replicate
it.
foreach (-2.0,-1.9,-1.5,-1.1,-1.0,-0.9,-0.5,-0.1,-0)
{
printf("string=%5s digits=%9f, float2big=%24.16e\n", $_, $_*0, $_*0);
}
string= -2 digits= 0.000000, float2big= 0.0000000000000000e+000
string= -1.9 digits= 0.000000, float2big= 0.0000000000000000e+000
string= -1.5 digits= 0.000000, float2big= 0.0000000000000000e+000
string= -1.1 digits= 0.000000, float2big= 0.0000000000000000e+000
string= -1 digits= 0.000000, float2big= 0.0000000000000000e+000
string= -0.9 digits= 0.000000, float2big= 0.0000000000000000e+000
string= -0.5 digits= 0.000000, float2big= 0.0000000000000000e+000
string= -0.1 digits= 0.000000, float2big= 0.0000000000000000e+000
string= 0 digits= 0.000000, float2big= 0.0000000000000000e+000
|