Autor Thema: Notes und Kommastellenrechnen, schonmal erlebt???  (Gelesen 7470 mal)

Offline Peacemaker

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Ich liebe dieses Forum!
Hallo, mal was ganz besonders seltsames:

ich habe folgenden input für eine Rechenschleife:

1 Durchlauf: 1320
2 Durchlauf: 1320 + 101.83
3. Durchlauf: 1421 + 84.2105
4 Druchlauf: 843526 + 0
5 Durchlauf: 843526 + 101.7
6 Durchlauf: 843627,7


Was soll das? Wieso rechnet er die 84.2105 als 842105 - bei allen anderen Komma werten gehts.

Hier nochmal der Code, glaub aber net das es daran liegt (Die Promts geben den Output von oben):

Code
	@While(start<ende;

@Prompt([OK];"i";"Neu gesamt= " +@Text(trans));
@Prompt([OK];"i";"+ "+@Text(transactions[start]));

	trans:=trans+@ToNumber(transactions[start]);

	start:=start+1	);
erg:=erg+@NewLine+@Text(slot)+"|"+@Text(trans/delta);
tmperg:=trans/delta;
erg2:=erg2+@NewLine+@Text(slot)+"|"+"-20%|"+@Text(tmperg*0,8);
i:=i+1);
« Letzte Änderung: 22.02.05 - 21:40:09 von Peacemaker »

klaussal

  • Gast
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #1 am: 22.02.05 - 10:53:02 »
... weil der . kein , ist ?

klaus

Offline Peacemaker

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Ich liebe dieses Forum!
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #2 am: 22.02.05 - 10:57:18 »
aber wieso ist dann 101.83 nicht 10183 ??? Und soweit ich weiss ist im englischen der . als seperator zulässig und hat bisher bei mri in notes noch keine probleme gemacht.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #3 am: 22.02.05 - 12:06:59 »
Dein Prompt sagt ÜBERHAUPT nix über die Eingangszahlen...

Ich vermute schwer, dass Dein Transactions- Feld schon falsch gefüllt ist...
Mal mit einer Zahl, und mal mit nem Text...

Aber Dein Beispiel verdeutlicht mir mal wieder, warum ich -obwohl es inzwischen geht- kein Freund von Schleifen in Formelsprache bin....

Deine Lösung:

@While(start<ende;
trans:=trans+@ToNumber(transactions[start]);
start:=start+1 );

lässt sich ganz einfach in EINER Zeile Code abhandeln:

trans := @Sum( @ToNumber( transactions ) );

Aber abgesehen davon würde ich mal folgendes zu Debug- Zwecken machen:
einfach in einen Aktionsbutton folgendes schreiben:

@Prompt( [OK] ; "Ohne ToNumber" ; @Implode( @Text( transactions ) ) );
@Prompt( [OK] ; "Mit ToNumber" ; @Implode( @Text( @ToNumber( transactions ) ) ) );

ich vermute den Fehler nämlich schwer im @ToNumber...

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Peacemaker

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Ich liebe dieses Forum!
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #4 am: 22.02.05 - 12:13:09 »
ok, @tonumber cuttet den . einfach weg - gibt es da eine alternative????

Glombi

  • Gast
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #5 am: 22.02.05 - 12:36:49 »
Zahlen in Textfeldern - da fällt man früher oder später immer auf die Nase!
Ein "." kann ein Tausendertrenner oder ein Dezimaltrenner sein. Ein "," ist ebenso nicht eindeutig.

Für Deinen Fall sieht es so aus, als ob das "." durch ein "," vor dem Umwandeln mit @ToNumber ersetzt werden müsste.

Andreas

Offline Peacemaker

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Ich liebe dieses Forum!
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #6 am: 22.02.05 - 13:05:58 »
danke soweit - aber dann habe ich jetzt ein richtiges Problem. Die Datenbank wertet Log-Einträge aus. Bekommt also txtinput der dann aufgebrochen wird. dort sind die nachkommastellen mit . statt , - gibt es einen replace algorithmus wie ich in jeder beliebeigen zahl . durhc , ersetzen kann? Es sind auch ganze zahlen dabei - es betrifft also nicht alle

klaussal

  • Gast
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #7 am: 22.02.05 - 13:25:58 »
... gibt es:
Code
Function komma2dot(sstring As String)
      'Wird von Sub "wareneingang_loeschen" aufgerufen, dieses wiederung ggfls. via Button "Letzte Eingabe widerrufen" in Maske "Bestpos"
	Dim retval As String
	Dim char As String
	For x = 1 To Len(sstring)
		char$ = Mid(sstring, x, 1)
		If char$ = "," Then
			char$ = "."
		End If
		retval$ = retval$ + char$
	Next
	komma2dot = retval$
End Function

klaus

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #8 am: 22.02.05 - 13:36:47 »
ich weiss zwar nicht, wofür komma2dot gut sein soll, wenn es in Script den Befehl "Replace" gibt, aber egal.

Da der ganze Thread sowieso auf Formel- Sprache aufsetzt, ist die Funktion sowieso obsolet.

Aber ich verstehe auch ehrlich gesagt die Frage nicht...
Die Funktion
@ToNumber( @ReplaceSubstring( transactions ; "." ; "," ) )
sollte eigentlich zu den Grundkenntnissen eines jeden Programmierers gehören...

So langsam bekomme ich das Gefühl, dass hier jemand aus der "Normalen" Programmierung kommt, und sich die Formel- Sprache noch nicht wirklich angeschaut hat. (sorry wenn ich falsch liege, aber der Verdacht drängt sich auf, wenn nicht mal "@Sum" und "@ReplaceSubstring" bekannt sind / in der Hilfe gefunden werden, und wenn ausserdem in der Formel- Sprache mit (vermeidbaren) Schleifen gearbeitet wird)

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

klaussal

  • Gast
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #9 am: 22.02.05 - 13:38:54 »
@Torsten,

seh ich genauso, habe aber mal die Function trotzdem reingestellt. Vielleicht hilft die ja irgendwann irgendjemand ......

klaus

Offline aki

  • Frischling
  • *
  • Beiträge: 13
  • Geschlecht: Männlich
  • You never know.
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #10 am: 22.02.05 - 13:47:45 »
Hi,

warum macht Ihr Euch das Leben so schwer?

Auszug aus der Notes Hilfe:

NotesInternational class
-> Represents the international settings in the operating environment, for example, the Windows Control Panel international settings.

DecimalSep property
-> Read-only. The decimal separator in number format, for example, the decimal point.

Syntax
To get: string = notesInternational.DecimalSep

ThousandsSep property 
-> Read only. The thousands separator in number format, for example, the comma.

Syntax
To get: string = notesInternational.ThousandsSep

Also:
Step 1 : Die eingegebene Zahl (im Textformat) einlesen
Step 2 : Die Eingabe validieren und dabei die Trennzeichen anpassen
Step 3 : Den Text in eine Zahl umwandeln
Step 4 : Die gewünschte Berechnung durchführen

Andreas

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #11 am: 22.02.05 - 13:50:43 »
Warum wir uns das Leben so schwer machen ???
Weil wir in der FORMEL-SPRACHE sind... nicht in LotusScript...

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline aki

  • Frischling
  • *
  • Beiträge: 13
  • Geschlecht: Männlich
  • You never know.
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #12 am: 22.02.05 - 13:59:43 »
Hi,

wenn Du den Code nicht umstellen kannst, dann schreib Dir einen LostusScript-Agenten, der Dir die Werte in die Notes.ini oder in ein Profildokument schreibt.

Den Agenten startest Du per @Formel-Befehl und holst Dir dann die gewünschten Werte an der entsprechenden Stelle ab.

Andreas 

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #13 am: 22.02.05 - 14:07:29 »
ich weiss nicht, ob Ihr's bemerkt habt, aber der eigentliche "Verursacher" des Threads hat sich schon lange ausgeklinkt... Wir diskutieren hier also um nix und wieder nix.

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Glombi

  • Gast
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #14 am: 22.02.05 - 14:40:59 »
Na vielleicht ist er beim Essen - soooo lange ist es ja auch nicht her.

Das mit dem
Zitat
NotesInternational class
-> Represents the international settings in the operating environment, for example, the Windows Control Panel international settings.

DecimalSep property

....
bringt aber nicht wirklich viel. Wenn Zahlen in einem Textfeld stehen, werden die mit den Einstellungen des jeweiligen Users hereingeschrieben. Es kann durch aus sein, dass es sowohl "." als auch "," gibt.
Also: Wenn Ihr wirklich mit Zahlen operieren wollt, dann nehmt ein Zahlfeld! Alles andere ist äußerst fehleranfällig!

Andreas

Offline Peacemaker

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Ich liebe dieses Forum!
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #15 am: 22.02.05 - 21:39:54 »
So Leutz- musste noch ein wenig wo anders dran arbeiten.

Vielen Dank, auf das Replace hätte ich auch kommen müssen - naja der wald vor lauter bäumen ebend...

Danke

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #16 am: 23.02.05 - 21:03:26 »
Nachwort von einem, der solches Zeugs auch schon hat machen müssen (allerdings nicht in Notes).

Wenn man Zahlen von Text in Werte umwandeln will, ist das Heranziehen der International-Properties absolut unerlässlich. Komma ist bei den Amis Tausendertrennzeichen, in D Dezimaltrenner und in CH gar nicht gebraucht. Punkt ist bei den Amis und in CH Dezimaltrenner, in D nicht gebraucht ... ergo, die Sache ist enorm heikel.

Funktionieren tut das ganze dann nur, wenn man auch weiss, mit welcher Konvention der Text erstellt wurde, wie Andreas G korrekt hingewiesen hat.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #17 am: 23.02.05 - 21:38:23 »
Funktionieren tut das ganze dann nur, wenn man auch weiss, mit welcher Konvention der Text erstellt wurde ...

Und genau das kann man später nicht mehr ermitteln.
Das Speichern von Inhalten in Feldern, die dem zu speichernden Datentyp nicht entsprechen, ist verheerend - vor allem, wenn die Software freundlicherweise viele landestypische Darstellungen anbietet. Zahl in Text, Datum in Text - immer ein absolutes No-no !

Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #18 am: 23.02.05 - 21:44:31 »
Klar, allerdings ist das hier ja eine Auswertung eines Logs, ist nicht gesagt, dass man das wirklich beeinflussen kann, wir wissen ja nicht, woher das Log kommt.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Notes und Kommastellenrechnen, schonmal erlebt???
« Antwort #19 am: 23.02.05 - 22:09:35 »
Oh ja, Jens, Du hast Wahr. Das hatte ich bereits wieder vergessen.
Jo, dann wird sich der Friedenstifter wohl einen Parser schreiben müssen. Mir ist sowas auch schon passiert - eine fremde DB musste gerade gezogen werden, in der Datums-/Zeitwerte mit allen möglichen Einstellungen in Textfeldern abgelegt waren. Sowas ist - glaube ich - noch "lustiger" als mit der endlichen Anzahl der auftretenden Kombinationen in "Zahlenfeldern", die in Wirklichkeit Text sind.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz