kostenloser Webspace werbefrei: lima-city


Daten als float speichern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    my-easytools

    my-easytools hat kostenlosen Webspace.

    Ich versuche derzeit in C# Daten mit dem Datentyp float in die Datenbank zu schreiben, leider werden die Daten immer in einen Integer Datentyp umgewandelt. Also z.B. aus 5,9 wird 5.
    Ich bin mir ziemlich sicher und habe auch noch mal alles nachgeprüft, dass ich überall den richtigen Datentyp anzugeben. Eine Idee woran das liegen könnte?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ohne Code oder die Tabellenstruktur können wir da wenig helfen, fürchte ich.
    Edit: Ich kann mir vorstellen, dass du in der Tabellenstruktur Integer angegeben hast.

    Beitrag zuletzt geändert: 3.6.2012 19:03:52 von adrians
  4. Autor dieses Themas

    my-easytools

    my-easytools hat kostenlosen Webspace.

    adrians schrieb:
    Ohne Code oder die Tabellenstruktur können wir da wenig helfen, fürchte ich.
    Edit: Ich kann mir vorstellen, dass du in der Tabellenstruktur Integer angegeben hast.


    Der Code ist ein bisschen zu umfangreich, um ihn hier zu veröffentlichen.
    Was ich in der Tabellenstruktur angeben habe ich schon überprüft und dort ist alles korrekt.
  5. Dann hoffe ich kennst du einen guten Glaskugelverkäufer.:lol:
    Wir wissen im Prinzip nämlich ncihts, außer, dass du gerne floats in die Datenbank schreiben willst und es nicht funktioniert.:wink:
    Und die Chance, das hier eine Person genau dasselbe Problem hat ist eher gering, aber warten wir ab.
  6. Autor dieses Themas

    my-easytools

    my-easytools hat kostenlosen Webspace.

    reimann schrieb:
    Dann hoffe ich kennst du einen guten Glaskugelverkäufer.:lol:
    Wir wissen im Prinzip nämlich ncihts, außer, dass du gerne floats in die Datenbank schreiben willst und es nicht funktioniert.:wink:
    Und die Chance, das hier eine Person genau dasselbe Problem hat ist eher gering, aber warten wir ab.


    Vielleicht hatte jemand ja schon mal ein ähnliches Problem
  7. my-easytools schrieb:

    Vielleicht hatte jemand ja schon mal ein ähnliches Problem


    Ja, in der Tat. Das Problem hatten neben dir wohl schon Tausend andere auch. Aber mit so ungenügenden Angaben wird dir da wirklich niemand weiterhelfen. Mehr Code und Struktur der Tabellen, wie schon gefordert, oder du darfst selber weiter Fehler suchen.

    Beitrag zuletzt geändert: 3.6.2012 19:37:36 von cyclobox
  8. cyclobox schrieb:
    Ja, in der Tat. Das Problem hatten neben dir wohl schon Tausend andere auch. Aber mit so ungenügenden Angaben wird dir da wirklich niemand weiterhelfen. Mehr Code und Struktur der Tabellen, wie schon gefordert, oder du darfst selber weiter Fehler suchen.


    Und das Problem ist ja: Wie sollen wir dir einen fehler nennen, den wir nicht kennen?
    Mit einer Kristallkugel, gedankenlesen oder wahrsagen?
  9. g****e

    Geb dem SQL Feld mal den Datentyp FLOAT oder DOUBLE, und nicht INT. Andernfalls halte dich an stricktes casting auch in der Kalkulation der Zahl.
    4.3 / 3 ergeben einen integer, weil hier ein int drin vorkommt. Überprüfe also auch dies.
    Woher kommen die Daten denn?

    Liebe Grüße
  10. Je nach Sprachzone und eingestellter Culture Info des PCs könnte die Datenbank auch auf die falschen Dezimaltrennzeichen prüfen.
    Dann macht es einen Unterschied, ob du "5,3" (Beistrich) oder "5.3" (Punkt) übergibst.

    Für gewöhnlich sollte das eine Fehlermeldung verursachen, vielleicht ergreift dein DB System hier aber auch Eigeninitiative und wandelt den unbekannten übergebenen Datentyp einfach automatisch in INT um....hatte ich immer wieder mal bei SQLite.

    Wäre eventuell auch gut zu wissen, welches Datenbanksystem Du benutzt.
    SQL, SQLite, MySQL?

    Poste doch zumindest den Sql-Kommando-String, den Du übergibst, wenn Du schon keine Code angeben willst.

    Beitrag zuletzt geändert: 5.6.2012 8:00:52 von adelwoehrer
  11. bist Du sicher, dass Du in der MySQL-Tabelle den richtigen Datentyp hast
    (int / float)

    bist Du sicher, dass Du vor dem Eintragen nicht die Float-Zahl rundest
    wie round() oder floor() oder ceil()

    bist Du Sicher, dass Der Dezimal-Trenner "richtig" ist <---- mein Tipp hier Fehler suchen
    also in PHP ist es Standard . (Punkt) nicht , (Komma)

    ist Dein Float-Wert 5.34 oder 5,34 (Punkt oder Komma) ????

    prüfe mal die Settings:

    $locale_info = localeconv();
    print "<pre>\n"; 
    print_r($locale_info);
    print "</pre>\n";


    und siehe bei [decimal_point] ob Punkt oder Komma


    Wenn Du bei , (Komma) als Dezimal-Trenner bleiben willst,
    dann kannst Du evtl. mit setlocale() was machen (LC_NUMERIC auf de_DE)

    aber ob (und wie) man das auch für MySQL einstellen kann, ist auch mir nicht klar
    daher empfehle ich bei Float-Werten den Dezimal-Trenner bei . (Punkt) zu lassen

    zum Umwandeln kannst Du ja deine Werte als String behandeln
    und jeweils das , (Komma) durch einen . (Punkt) ersetzen

    Komma durch Punkt ersetzen:
    $wert = str_replace(',' , '.' , $wert);


    dann wird 5,34 zu 5.34 und dann klappt's auch bei ... als Float in MySQL einzutragen
    nur sollte dann im Ausgangs-Wert auch kein tausender-Trennzeichen drin sein

    :)


    Beitrag zuletzt geändert: 4.6.2012 17:16:39 von wzone
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!