Zahlenausgabe in kleinstmöglicher Zeichenzahl

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Zahlenausgabe in kleinstmöglicher Zeichenzahl

Beitrag von Daffy0815 »

Hallo Leute,

folgendes Problem:

Ein microcontrollerbasiertes Subsystem mit einer BCD-Arithmetik mit 8-Stellen Genauigkeit (-1E-128..1E+128) wird via serieller Schnittstelle mit Daten "gefüttert".
Da der Wertebereich "Float" nicht ausreicht wird nur "Double" verwendet.
Die Umwandlung der Zahlen findet mit "StrD(<Zahl>, 8 )" statt.
Hierbei werden aber alle Zahlen in diesem Format übertragen was zu unnötigem "Stress" in Übertragung und Verarbeitung führt.

Statt die Zahl "Null" als "0" zu übertragen wird "0.00000000" übertragen.

Gibt es in PureBasic eine Funktion die nur die notwendigen Ziffern übergibt?

Gruß

Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Zahlenausgabe in kleinstmöglicher Zeichenzahl

Beitrag von STARGÅTE »

RTrim()

Code: Alles auswählen

Define Double.d
Double = 0.25
Debug RTrim(StrD(Double,20),"0")
Double = #PI
Debug RTrim(StrD(Double,20),"0")
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Re: Zahlenausgabe in kleinstmöglicher Zeichenzahl

Beitrag von Daffy0815 »

@Stargate

Klar!
Ich hätte jetzt rückwärts die Nullen "rausgegknackt"

Tausend Dank
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Re: Zahlenausgabe in kleinstmöglicher Zeichenzahl

Beitrag von Daffy0815 »

Verbesserte Variante (frisst auch die unnötigen Dezimalpunkte)

Code: Alles auswählen

    Wert$ = RTrim(StrD(Wert.d, 20), "0")
    Wert$ = RTrim(Wert$, ".")
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Antworten