PureBasic 5.50 Final

Ankündigungen PureBasic oder die Community betreffend.
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: PureBasic 5.50 Beta 1

Beitrag von Andesdaf »

Naja, ValF wird mit dem Tausenderkomma nichts anzufangen wissen und bricht
daher ab. In der Hilfe steht:

Das Parsen (Suchen) nach Zahlen stoppt beim ersten nicht numerischen Zeichen.
Win11 x64 | PB 6.00 (x64)
Benutzeravatar
Pelagio
Beiträge: 423
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: PureBasic 5.50 Beta 1

Beitrag von Pelagio »

@Andesdaf

eben!
Ich kann also FormatNumber nur zur Darstellung von Zahlen benutzen, selber aber keine Berechnungen anstellen.
Wie schon geschrieben, ist dies der Sinn von dem Befehl so ist es so.
Man muss dies nur mit Gewissheit wissen.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.03 LTS]. :allright:
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: PureBasic 5.50 Beta 1

Beitrag von NicTheQuick »

Ich hab mir's noch nicht angeschaut, aber kann FormatNumber() auch Sprachenspezifisch formatieren? "1,234.56" ist nicht gerade deutsch. Das wäre eher "1234,56", maximal noch mit Leerzeichen zwischen 1 und 2.
Bild
Benutzeravatar
mhs
Beiträge: 224
Registriert: 11.01.2009 16:30
Wohnort: Graben
Kontaktdaten:

Re: PureBasic 5.50 Beta 1

Beitrag von mhs »

Ja, man kann scheinbar per Parameter die Zeichen für 1000er Trennung und Komma angeben.
Michael Hack

Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PureBasic 5.50 Beta 1

Beitrag von RSBasic »

Ja, kannst du. Beispiel:

Code: Alles auswählen

Debug FormatNumber(1234567.8987, 2, ",", " ")
Ausgabe hat geschrieben:1 234 567,90
Parameterliste:

Code: Alles auswählen

FormatNumber(Number.d, NbDecimals, DecimalPoint$, ThousandSeperator$)
Beschreibung:
Number.d: Zahl
NbDecimals: Anzahl der Stellen nach dem Komma
DecimalPoint$: Ersatzzeichen für das Komma
ThousandSeperator$: Ersatzzeichen für die Tausenderstelle
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: PureBasic 5.50 Beta 1

Beitrag von Nino »

Pelagio hat geschrieben:Ich kann also FormatNumber nur zur Darstellung von Zahlen benutzen, selber aber keine Berechnungen anstellen.
Du kannst auch das Ergebnis von FormatNumber() weiterverwenden.
Aber halt nur wenn es so "geformt" ist, dass die anderen Funktionen damit umgehen können.
Konkret heißt das in dem von dir genannten Beispiel, dass FormatNumber() kein Tausendertrennzeichen verwenden darf, z.B.

Code: Alles auswählen

d.d = 1123.456
Debug d
s.s = FormatNumber(d, 2, ".", "")
Debug s
Debug ValD(s)
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: PureBasic 5.50 Beta 1

Beitrag von Nino »

mhs hat geschrieben:Ja, man kann scheinbar per Parameter die Zeichen für 1000er Trennung und Komma angeben.
Man kann das nicht "scheinbar" tun, sondern tatsächlich. :-)
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: PureBasic 5.50 Beta 1

Beitrag von #NULL »

ValF() ist eher als gegenstück zu StrF() zu sehen, und nicht zu FormatNumber() bzw. zu benutzereingaben.
bei umwandlung von FormatNumber() oder benutzereingaben mit tausendertrennzeichen einfach ReplaceString "," mit "" (bei z.b. US format) und dann ValF().
bei umwandlung von z.b. deutschem format ReplaceString() "." mit "", und danach ReplaceString() "," mit ".", dann ValF().

<edit>

Code: Alles auswählen

Procedure.d UnFormatNumber(s$, decimalMark$="," ,thousandsSeparator$=".")
  s$ = ReplaceString(s$, thousandsSeparator$, "")
  If decimalMark$ <> "."
    s$ = ReplaceString(s$, decimalMark$, ".")
  EndIf
  ProcedureReturn ValD(s$)
EndProcedure

d.d = 123456.789

Debug d
Debug FormatNumber(d)
Debug FormatNumber(d, 2, "," ,".")

Debug UnFormatNumber("123.456,789")
Debug UnFormatNumber("123,456.789", "." ,",")
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PureBasic 5.50 Beta 1

Beitrag von RSBasic »

Besser wäre es, wenn es ParseNumber() gäbe. Wie bei FormatDate() <=> ParseDate()
Dann ist es einheitlicher.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Pelagio
Beiträge: 423
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: PureBasic 5.50 Beta 1

Beitrag von Pelagio »

Guten Morgen an alle,
das Ergebnis meiner Anfrage ist genau das was ich mir erhofft habe und was RSBasic folgerichtig formuliert hat.
FormatNumber an sich ist schön zum Anzeigen aber mit ParseNumber könnte man damit auch schön Arbeiten.
:allright:
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.03 LTS]. :allright:
Antworten