setlocale problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • setlocale problem

    Ich habe das Problem, dass mir das Script beim rechnen mit Kommawerten die Ausgabe nicht korrekt berechnet. Das Problem ist, dass er statt 20,60 einfach nur 40 ausgibt beim folgenden Beispiel.

    PHP-Code:
    <?
    if (false !== setlocale(LC_ALL, 'German_Germany.1252', 'de_DE@euro', 'de_DE', 'de', 'ge')) {
       $locale_info = localeconv();
       echo '<pre>';
       print_r($locale_info);
       echo '</pre>';
    }

    $test = "20,30" * 2;
    echo $test;

    $loc_de = setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
    echo "Preferred locale for german on this system is <pre>'$loc_de'</pre>";
    ?>
    Die Ausgabe von dem Testscript ist diese:

    EDIT:
    Array
    (
    [decimal_point] => .
    [thousands_sep] =>
    [int_curr_symbol] => EUR
    [currency_symbol] => €
    [mon_decimal_point] => ,
    [mon_thousands_sep] => .
    [positive_sign] =>
    [negative_sign] => -
    [int_frac_digits] => 2
    [frac_digits] => 2
    [p_cs_precedes] => 0
    [p_sep_by_space] => 1
    [n_cs_precedes] => 0
    [n_sep_by_space] => 1
    [p_sign_posn] => 1
    [n_sign_posn] => 1
    [grouping] => Array
    (
    )

    [mon_grouping] => Array
    (
    [0] => 3
    )

    )

    40Preferred locale for german on this system is

    'German_Germany.1252'



    Das System hier auf dem ich gerade Arbeite ist ein Windows XP, eingesetzt werden soll das eigentliche Script auf Linux wie auch auf Windows servern.

    Gibt es einen zuverlässigen Weg die Werte korrekt zu errechnen systemunabhängig, so das ich im obrigen Beispiel wirklich 40,60 zurück bekomme? Danke!

  • #2
    Weil es kein Komma sondern ein Punkt sein muss...

    Kommentar


    • #3
      Genau DAS sollte ja obriges ändern...

      Kannst du auch hier nachlesen, u.a. in den Kommentaren.
      http://de2.php.net/manual/de/function.setlocale.php

      Kommentar


      • #4
        Und wieso nicht einfach str_replace oder ähnliches?
        mfg - sagg

        Kommentar


        • #5
          Kapier ich nicht:

          es heißt doch LOKALE Einstellungen und im Array mit den Werten ist für Ländereinstellung GERMANY [decimal_point] => . vorgegeben???????

          Wer hat denn diese locales festgelegt?

          Kommentar


          • #6
            aber in dem angegebenen Link stehts doch:

            setlocale (LC_NUMERIC, ',');

            setzt das Trennzeichen. Ich würd aber vorher alles mit LC_ALL auf deutsch setzen und danach LC_NUMERIC.

            Kommentar


            • #7
              Original geschrieben von burzum
              Genau DAS sollte ja obriges ändern...
              Hättest du vielleicht gerne - tut es aber nicht.
              OffTopic:
              Kommt man sich beim einsetzen von Smilies wie eigentlich nicht blöd vor, wenn man selber von allen am Thread Beteiligten vermutlich am wenigsten Ahnung hat?

              Kannst du auch hier nachlesen
              Vielleicht liest du es erst mal selber mit Verstand, und versuchst es zu verstehen.

              Die locale-Einstellungen wirken sich auf Ausgaben aus - anzunehmen, dass sich deshalb das scriptinterne Zahlenformat ändert, ist ziemlich naiv.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar

              Lädt...
              X