Zitat von
Phoenix:
Auf ganze Zahl abrunden: Round(Zahl - 0.5);
Was dann wieder
trunc entspricht.
@Topic:
IMHO liegt das ganze an der Ungenauigkeit der Gleitkommazahlen. Wenn sich 3,7 mit dem Datentyp nicht genau darstellen lassen, kommt eben auch nicht 1 heraus.
2 mögliche Lösungen:
- Nimm eine andere Einheit z.B. Millimeter und rechne mit Ganzzahlen.
- Addiere vor dem Abrunden einen Toleranzwert (1 mm oder weniger [einfach mal probieren]).
Evtl. könnte es bei Lösung zwei auch nützlich sein, einen anderen Datentypen mit höherer Genauigkeit, z.B.
Double oder
Currency zu wählen, wenn der Toleranzwert möglichst klein sein soll.
[edit]Aber taaktaaks Lösung ist einfacher
und vermutlich die passende für dein Problem.,gibt aber im manchen Fällen, z.B. 2.25, Kommazahlen aus, nicht wie sinnvollerweise gefordert, Ganzahlen.[/edit]
MfG,
Bug