Thread Rechenfehler mit Perl ausgleichen (71 answers)
Opened by bianca at 2013-04-27 13:42

hlubenow
 2013-04-28 21:14
#167340 #167340
User since
2009-02-22
789 articles
BenutzerIn
[default_avatar]
2013-04-27T18:21:05 bianca
Fängt ja schon hier an das Problem:
print "\n".(.57 * 100 == 57 ? 'ja' : 'nein')."\n";

Also, ich kann Dein (d.h. unser) Problem sehr gut nachvollziehen und kapiere ebenfalls nicht, wie man damit umgehen soll.
Vor allem hat man dasselbe Problem auch in C:
Code (c): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

int main()
{
    printf("%f\n", .57 * 100);

    if (.57 * 100 == 57) {
        puts("ja");
    } else {
        puts("nein");
    }

    if (.57 * 100.0 == 57.000000) {
        puts("ja");
    } else {
        puts("nein");
    }
}

Ergebnis:
Code: (dl )
1
2
3
57.000000
nein
nein

Toll. Das mit sprintf() oder Runden zu umgehen, kann eigentlich keine Lösung sein, denn mathematisch müßte da ja was anderes rauskommen (was man vom Computer auch zu Recht erwartet).
Last edited: 2013-04-28 21:15:48 +0200 (CEST)

View full thread Rechenfehler mit Perl ausgleichen