[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: int-function: programming error or bug?
From: |
David Kastrup |
Subject: |
Re: int-function: programming error or bug? |
Date: |
Fri, 27 Feb 2009 16:43:03 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux) |
Aron Brunner <address@hidden> writes:
> Dear Sir, dear Madame,
>
> thank you very much for awk/gawk i work with over the last 10 years
> with success and great joy.
> With gawk 3.1.6 on Mandriva 2009.0 i get a result i don't understand:
>
> The code
> -----------------------------------------------
> #!/usr/bin/awk -f
>
> BEGIN {
> for (alfa=8.6;alfa<=9.2;alfa=alfa+0.1) {
> alfaint=int(alfa);
> printf "%s%5.10f s%d\n","alfa=",alfa,"int(alfa)=",alfaint;
> }
> beta=9.0;
> betaint=int(beta);
> printf "%s%5.10f %s%d\n","beta=",beta,"int(beta)=",betaint;
> }
> -----------------------------------------------
> gives the integer from alfa=9.0 to 8:
> alfa=8.6000000000 int(alfa)=8
> alfa=8.7000000000 int(alfa)=8
> alfa=8.8000000000 int(alfa)=8
> alfa=8.9000000000 int(alfa)=8
> alfa=9.0000000000 int(alfa)=8
> alfa=9.1000000000 int(alfa)=9
> alfa=9.2000000000 int(alfa)=9
> beta=9.0000000000 int(beta)=9
>
> I suppose i wrote the code-lines in a wrong manner;
> may i respectfully ask for information.
Try
#!/usr/bin/awk -f
BEGIN {
for (alfa=8.6;alfa<=9.2;alfa=alfa+0.1) {
alfaint=int(alfa);
printf "%s%5.20f %s%d\n","alfa=",alfa,"int(alfa)=",alfaint;
}
beta=9.0;
betaint=int(beta);
printf "%s%5.20f %s%d\n","beta=",beta,"int(beta)=",betaint;
}
instead. Do you understand the resulting output:
alfa=8.59999999999999964473 int(alfa)=8
alfa=8.69999999999999928946 int(alfa)=8
alfa=8.79999999999999893419 int(alfa)=8
alfa=8.89999999999999857891 int(alfa)=8
alfa=8.99999999999999822364 int(alfa)=8
alfa=9.09999999999999786837 int(alfa)=9
alfa=9.19999999999999751310 int(alfa)=9
beta=9.00000000000000000000 int(beta)=9
?
--
David Kastrup