Code: Alles auswählen
round(71.1,2)*100 = 7110.00
int(round(71.1,2)*100) = 7109 statt 7110
CRT
Moderator: Moderatoren
Code: Alles auswählen
round(71.1,2)*100 = 7110.00
int(round(71.1,2)*100) = 7109 statt 7110
Code: Alles auswählen
round(71.1,2 ) * 100 7110,00
round(711,0 ) * 10 7110
int( round(71.1,2 ) * 100 ) 7109
int( round(711,0 ) * 10 ) 7110
Code: Alles auswählen
Clipper (R) 5.2e
Copyright (c) 1985-1995, Computer Associates International, Inc.
Microsoft C Floating Point Support Routines
Copyright (c) Microsoft Corp 1984-1987. All Rights Reserved.
306K available
Compiling TEST.PRG
Code size 176, Symbols 64, Constants 192
__ __
(«») («») BLINKER Dynamic Overlay / Windows Linker 3.10
¦ + DOS Extender
___ Blink and you'll miss it !!
Copyright (c) Assembler Software Manufacturers, Inc. 1990-94
Alle Rechte vorbehalten. Serien-Nr. ER-....... Deutsche Version.
BLINKER : Linken war erfolgreich
TEST.EXE (156 Kb) (0.1 Sekunden)
D:\TEMP>test
round(71.1,2 ) * 100 7110.00
round(711,0 ) * 10 7110
int( round(71.1,2 ) * 100 ) 7109
int( (round(71.1,2 ) * 100) ) 7109
int( round(711,0 ) * 10 ) 7110
Genau das macht INT() ja.CRT hat geschrieben:Eigentlich erwarte ich von int() nur das abtrennen der Nachkommastellen eines existierenden korrekten Wertes.
Aber trotzdem danke für die Erklärung.
Da gibt es in Xbase noch einige solcher Anomalien und auch inkompatibles Verhalten zu Clipper bzw. den CT-III.
Interessant, dass Manfred deine Verweise auf Fremdprodukte toleriert aber bei mir dann gleich ausrastet, wenn ich das Wort W... erwähne. Gut dein Programm ist keine Konkurrenz zu Alaskabrandelh hat geschrieben:PowerBasic hat das getan und dort gibt es die Diskussionen nicht mehr
Manfred, wer ist Manfred ... ach ja der, der immer die Icons vergisst wenn er einen Scherz machtHerbert hat geschrieben:Interessant, dass Manfred deine Verweise auf Fremdprodukte toleriert aber bei mir dann gleich ausrastet, wenn ich das Wort W... erwähne.
Ok hab ich verstanden =D>Manfred hat geschrieben:Das habe ich gelesen, Herbert.
Aber wenn Du meine Kommentare dsbzgl. als Ausrasten ansiehst, dann sei bloß sehr weit weg, wenn ich mich mal wirklich aufrege.
Sind wir doch, Jan. Das war doch nur ein wenig auf die Schippe genommen (von beiden).Jan hat geschrieben:Hey Jungs, seid mal wieder lieb zueinander.
Code: Alles auswählen
IF val-INT(nval) < -0.04
nval := INT(nval)+1
ELSE
nval:=INT(nval)
END
wo er Recht hat, hat er Recht.Herbert hat geschrieben: Sind wir doch, Jan. Das war doch nur ein wenig auf die Schippe genommen (von beiden).
Code: Alles auswählen
Directory("LM*.DBF")
--> liest fälschlicher Weise auch z.B. "LÖM*.DBF"
Ich löse das mit einer eigenen Funktion:Herbert hat geschrieben:Um nochmals auf das eigentliche Problem zurück zu kommen:
Man könnte auch auf eigene Art runden (als Idee):Code: Alles auswählen
IF val-INT(nval) < -0.04 nval := INT(nval)+1 ELSE nval:=INT(nval) END
Code: Alles auswählen
FUNCTION INTEGER(nZahl)
RETURN VAL(LEFT(STR(nZahl, 21, 10), 10))
round(71.1,2)*100 = 7110.00
int(round(71.1,2)*100) = 7109 statt 7110
integer(round(71.1,2)*100) = 7110