[gelöst] Qt schneidet Nachkommastellen ab -> setLocal(..

Alles rund um die Programmierung mit Qt
Antworten
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

[gelöst] Qt schneidet Nachkommastellen ab -> setLocal(..

Beitrag von Baz »

Hi,

irgendwie bin ich auf etwas Kurioses gestoßen. Ich habe mein Programm letztens auf einem Linux 64 Bit System mit Debian Lenny ausprobiert (Qt Version 4.5.1). Unter anderem nutze ich auch die gSoap Bibliothek und mir ist dabei aufgefallen, dass merkwürdiger Weise alle Doubles auf der Serverseite abgeschnitten ankommen. Erst dachte ich es würde an gSoap liegen, aber nach längerem Ausprobieren fiel mir auf, dass es an Qt liegt, hier der Code:

Code: Alles auswählen

#include <QDebug>

int main(int argc, char *argv[])
{
	//QCoreApplication a(argc, argv);

	const char* ds = "1.234";
	double d;
	char *r;
	d = strtod(ds, &r);
	qDebug()  << d;

	return 0;
}
Soweit klappt alles, kommentiert man nun die CoreApplication wieder ein, bekommt man als Ausgabe nur noch eine 1.

Hat jemand eine Idee an was das liegen könnte? Ist es einfach ein übler Bug? Unter 32 Bit funktioniert alles wunderbar.

Gruß Michael
Zuletzt geändert von Baz am 30. Oktober 2009 11:06, insgesamt 2-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

ich würde sagen die Locale passt nicht mehr.
'man setlocale'
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

Beitrag von Baz »

Hier sind die Einstellungen für locale:

krombacher:~# locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

Wüsste jetzt nicht was da ggf nicht stimmen könnte, aber ich lasse mich gerne eines Besseren belehren ;).
guenni81
Beiträge: 134
Registriert: 29. Juli 2006 02:22

Beitrag von guenni81 »

Müsste glaub ich mitlehrweile de_DE.utf8 heißen, aber schau mal mit locale -a nach.
mfg
Günni
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

Beitrag von Baz »

krombacher:~# locale -a
C
de_DE.utf8
POSIX

Da das aber alles von Debian stammt und autogeneriert wird, wäre es sonst ein Bug in Debian...
guenni81
Beiträge: 134
Registriert: 29. Juli 2006 02:22

Beitrag von guenni81 »

Versuche es mal mit dem de_DE.utf8 ob es wirklich daran liegt. Bei TYPO3 hat mir das nämlich weitergeholfen.
mfg
Günni
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Baz hat geschrieben: Wüsste jetzt nicht was da ggf nicht stimmen könnte, aber ich lasse mich gerne eines Besseren belehren ;).
Und seit wann ist ein Punkt wie in "1.234" ein gültiges Trennzeichen in der deutschen Sprache?
Setz die locale auf C (in deinem Programm natürlich) und es funktioniert...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

Beitrag von Baz »

Ich muss zugeben, dass es ja etwas peinlich ist, weil das genau so auch in der Doku von QCoreApplication steht... Auf jeden Fall es funktioniert, vielen Dank :)
Antworten