AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Gleitkommazahlen mit Punkt statt Komma

Ein Thema von Erutan · begonnen am 19. Aug 2013 · letzter Beitrag vom 19. Aug 2013
Antwort Antwort
Seite 1 von 2  1 2      
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#1

Gleitkommazahlen mit Punkt statt Komma

  Alt 19. Aug 2013, 01:36
Delphi-Version: 5
Hallo,

ich würde gerne einen Wert aus einem Delphiprogramm mittels IdHTTP an meinen Internetserver senden lassen wo es von einem php-script in eine MySQL-Datenbank geschrieben wird.

Es handelt sich bei diesem Wert nur um eine Gleitkommazahl (Float) mit zwei Nachkommastellen, in der Form: 0,92.

Ein weiteres php-script liest diese Zahl, zusammen mit einigen weiteren hundert Zahlen in eine Tabelle ein und soll damit rechnen. Es soll ein Durschschnitt berechnet werden indem alle Zahlen aufadiert und dann durch die Anzahl der Zahlen geteilt werden. Daher kann ich (denke ich) die Werte auch nicht als String übertragen oder in der Datenbank speichern.

Nun erwartet die MySQL Datenbank allerdings ein anderes Format als Delphi ausspuckt. Lasse ich mir nämlich den ermittelten Wert, der übertragen werden soll, als Label anzeigen, so stet da ein Wert mit einem Komma. MySQL will bei Float aber einen Wert mit einem Punkt statt des Kommas.

Die Berechnung findet hier statt:

Delphi-Quellcode:
ergebnis := werter / sec ;
ergebnis := ergebnis*100;
ergebnis := round(ergebnis);
ergebnis := ergebnis/100;
Label4.Caption := 'Auswertung: ' + FloatToStr(ergebnis);
(Die Multiplikation mit 100, das kaufmännische Runden und die Division durch 100 findet statt um das Ergebnis auf zwei Nachkommastellen zu beschränken.)

Die Variable "werter" ermittelt wie oft ein bestimmtes Ereignis eintritt. Sie wird durch die vertrichene Zeit (sec) geteilt.
Das Ergebnis (ergebns) soll dann in die MySQL-Datenbank geschrieben werden damit ein php-script mit diesen Werten in Echtzeit statistische Berechnungen anstellen kann.

Nur nimmt MySQL keine Floatzahlen mit Komma statt Punkt an. Der Wert bleibt dann einfach 0.
Holger
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#2

AW: Gleitkommazahlen mit Punkt statt Komma

  Alt 19. Aug 2013, 02:00
Setze den Wert DecimalSeparator:='.';
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Gleitkommazahlen mit Punkt statt Komma

  Alt 19. Aug 2013, 02:01
Es gibt von FloatToStr() eine überladene Version mit 2 Parametern. Der zweite ist vom Typ TFormatSettings, in dem du u.a. festlegen kannst, welches Zeichen als Dezimalseparator bei der Umwandlung benutzt werden soll.

Edit: Die Variante von Thom geht auch, nur wird damit das Zeichen global für dein gesamtes Programm geändert. Das kann u.U. dann Probleme an anderen Stellen machen. Man kann es natürlich wieder zurück setzen nachdem man fertig ist, aber sauberer ist imho die Benutzung der Überladung.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#4

AW: Gleitkommazahlen mit Punkt statt Komma

  Alt 19. Aug 2013, 02:46
Cool, das funktioniert.

Danke Euch beiden. Ich habe die erste Möglichkeit gewählt. In diesem Fall ist es nicht schlimm wenn sich der Wert global ändert.
Holger
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.443 Beiträge
 
Delphi 12 Athens
 
#5

AW: Gleitkommazahlen mit Punkt statt Komma

  Alt 19. Aug 2013, 08:12
Ich habe die erste Möglichkeit gewählt. In diesem Fall ist es nicht schlimm wenn sich der Wert global ändert.
Aber vielleicht im nächsten?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#6

AW: Gleitkommazahlen mit Punkt statt Komma

  Alt 19. Aug 2013, 09:36
IIRC gab es die überladene Variante unter Delphi 5 noch gar nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
220 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Gleitkommazahlen mit Punkt statt Komma

  Alt 19. Aug 2013, 11:28
Ohne sich Globale Probleme einzufangen kann man das ganz einfach mit einem StringReplace machen

mfg Hannes
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Gleitkommazahlen mit Punkt statt Komma

  Alt 19. Aug 2013, 11:47
.....

Geändert von arnof (19. Aug 2013 um 14:02 Uhr)
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
220 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Gleitkommazahlen mit Punkt statt Komma

  Alt 19. Aug 2013, 12:14
Modernere Delphis bieten dafür den Datentyp Currency und dann isses kein Problem mehr

mfg Hannes
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Gleitkommazahlen mit Punkt statt Komma

  Alt 19. Aug 2013, 12:22
es gibt ja auch andere Währungen, da muss man trotzdem von Hand ran und man kann sich nicht darauf verlassen!

Ausserdem gilt dies auch für alle Datenbanken
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz