1.000 also tausender Punkt

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

1.000 also tausender Punkt

Beitrag von jornbyte »

Hi
lang lang ist es her, aber heute melde ich mich mal wieder.
Da findet eine tolle Berechnung (float) statt und das Ergebnis ist 1000 und wird 1.000 dargestellt.
Wie bekomme ich den Punkt weg?
mfg Jornbyte
http://forum.electronicwerkstatt.de/phpBB/" onclick="window.open(this.href);return false;

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: 1.000 also tausender Punkt

Beitrag von Socke »

jornbyte hat geschrieben:Da findet eine tolle Berechnung (float) statt und das Ergebnis ist 1000 und wird 1.000 dargestellt.
Wie bekomme ich den Punkt weg?
Wo? Wie? Was?

Ansonsten suche mal nach: Format Characters oder TFormatSettings, SysUtils.DefaultFormatSettings
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: 1.000 also tausender Punkt

Beitrag von Euklid »

jornbyte hat geschrieben:Hi
lang lang ist es her, aber heute melde ich mich mal wieder.
Da findet eine tolle Berechnung (float) statt und das Ergebnis ist 1000 und wird 1.000 dargestellt.
Wie bekomme ich den Punkt weg?
Welche Funktion zum Umwandeln von Float in String verwendest Du denn? Bei StrToFloat beobachte ich den Punkt nicht.

Viele Grüsse, Euklid

Benutzeravatar
willi4willi
Lazarusforum e. V.
Beiträge: 167
Registriert: Sa 1. Nov 2008, 18:06
OS, Lazarus, FPC: Windows, Linux (debian) / Lazarus 3.2 / FPC 3.2.2
CPU-Target: i386, win64, arm

Re: 1.000 also tausender Punkt

Beitrag von willi4willi »

Hallo,

bei mir macht die Funktion FloatTostr(realwert,FormatSettings) auch keinen Punkt, obwohl FormatSettings.ThousandSeparator:='.' eingestellt ist.

Na, wenigstens haut das mit dem Komma hin.

Ist das ein Fehler?

Willi4willi
 

Viele Grüße

Willi4Willi

------------

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: 1.000 also tausender Punkt

Beitrag von Socke »

willi4willi hat geschrieben:bei mir macht die Funktion FloatTostr(realwert,FormatSettings) auch keinen Punkt, obwohl FormatSettings.ThousandSeparator:='.' eingestellt ist.

Na, wenigstens haut das mit dem Komma hin.

Ist das ein Fehler?
Vielleicht schon. Wäre toll, wenn du ein Code-Ausschnitt hier posten könntest.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
willi4willi
Lazarusforum e. V.
Beiträge: 167
Registriert: Sa 1. Nov 2008, 18:06
OS, Lazarus, FPC: Windows, Linux (debian) / Lazarus 3.2 / FPC 3.2.2
CPU-Target: i386, win64, arm

Re: 1.000 also tausender Punkt

Beitrag von willi4willi »

Hallo,
hier ein Beispiel mit Edit-Feld und Button:

Code: Alles auswählen

unit Unit1;
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
 
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c : real;
begin
  a:=123.123;
  b:=456.456;
  c:=a*b;
  DefaultFormatSettings.ThousandSeparator:='.';
  DefaultFormatSettings.DecimalSeparator:=',';
  Edit1.Text:=FloatToStr(c);
//oder
//  Edit1.Text:=FloatToStr(c,DefaultFormatSettings);
end;
 
end.
Viele Grüße

Willi4willi
 

Viele Grüße

Willi4Willi

------------

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: 1.000 also tausender Punkt

Beitrag von Socke »

Habe gerade in den Quelltext geschaut. Das ist kein Fehler.

Der Tausender-Trenner wird nur gesetzt, wenn die interne Funktion FloatToStrFIntl den format-Parameter mit den Werten ffCurrency oder ffNumber aufgerufen wird (FloatToStr() übergibt ffGeneral). Als Nutzer kommst du an die Funktion nicht heran, kannst den Parameter aber über die Funktion FloatToStrF() steuern.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
willi4willi
Lazarusforum e. V.
Beiträge: 167
Registriert: Sa 1. Nov 2008, 18:06
OS, Lazarus, FPC: Windows, Linux (debian) / Lazarus 3.2 / FPC 3.2.2
CPU-Target: i386, win64, arm

Re: 1.000 also tausender Punkt

Beitrag von willi4willi »

Darum verwende ich auch lieber

Code: Alles auswählen

Edit1.Text:=FormatFloat('#,###.##',c);
Wenn ich keinen Punkt haben möchte dann vorher:

Code: Alles auswählen

DefaultFormatSettings.ThousandSeparator:=#0;
Das hat bei mir jedenfalls geklappt.

Viele Grüße
 

Viele Grüße

Willi4Willi

------------

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Re: 1.000 also tausender Punkt

Beitrag von jornbyte »

Danke euch, genau das "DefaultFormatSettings.ThousandSeparator:=#0;" hat den Punkt beseitigt

Antworten