Eine Kommastelle weg streichen, ohne zu Runden

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Lightsource.

    Eine Kommastelle weg streichen, ohne zu Runden

    Hallo,
    ist wahrscheinlich ganz simpel, aber irgendwie hab ich bis jetzt nicht das gefunden was ich machen will.

    also ich möchte für eine Rechnung die letzte Kommastelle einer Zahl ignorieren.

    also meine Zahl ist z.B. = 1,16 gerechnet werden soll aber nur mit 1,1
    ist die Zahl z.b. 1,13 soll auch mit 1,1 gerechnet werden. usw...

    Wie kann man das machen? Dachte mit FormatNumber, aber da wird auch gerundet.
    Die Zahlen für die Berechnungen soll man nie auf- oder abrunden. Man soll lediglich die Ausgabe formatieren. Das geht einfach mit den Überladungen der Methoden ToString. Beispiel:

    VB.NET-Quellcode

    1. Dim a As Double = 1234233.2381729381
    2. MessageBox.Show(a.ToString("N2"))

    N2 : die Zahl wird mit 1000er-Trennzeichen und 2 Stellen nach dem Komma ausgegeben. Wenn Du nur eine Stelle nach dem Komma haben willst -> N1, u.s.w.
    ähm, da kommt bei mir auch ein Gerundetes Ergebnis raus 1234233.24

    Ich brauche den Wert mit nur einer Kommastelle, weil ich nach diesem Wert werte aus einer Tabelle einlesen will. bzw. für diesen abgeschnittenen Wert 0,1 davor und dahinter, um mit dem Originalwert einen Wert dazwischen aus zu rechnen.

    @Dodo: Ja, da wird noch was mit gerechnet
    Multipliziere die Zahl mit 10^(Anzahl der gewünschten Nachkommastellen), benutze Math.Truncate, dividiere durch 10^(Anzahl der gewünschten Nachkommastellen). Ggf macht es Sinn mit Decimal statt Double zu arbeiten, um Rundungsfehler beim Rechnen zu vermeiden. Ist aber vermutlich nicht nötig, wenn die Zahlen nicht sehr (!) groß oder klein sind.

    Destiny schrieb:

    ähm, da kommt bei mir auch ein Gerundetes Ergebnis raus 1234233.24

    Ich brauche den Wert mit nur einer Kommastelle, weil ich nach diesem Wert werte aus einer Tabelle einlesen will. bzw. für diesen abgeschnittenen Wert 0,1 davor und dahinter, um mit dem Originalwert einen Wert dazwischen aus zu rechnen.

    @Dodo: Ja, da wird noch was mit gerechnet



    Dann frage ich mich aber, ob es nicht besser wäre, die Abfrage der Tabelle zu optimieren, statt mit
    Strings oder mit Exponentialfunktionen zu arbeiten.