none
Rechnereien mit der Powershell

    Question

  • Hi,

    wenn ich mit der Powershell zwei Zahlen addiren moechte

    0,33 +1 ist die Ausgabe nicht 1,33 sondern das Komma wird al Trennzeichen interpretiert und die Ausgabe ist

    0

    33

    1

    Wenn ich 0.33+1 rechne wird 1,33 als Ergebnis ausgegeben wie zu erwarten war.

    Wieso wird in der Ausgabe das "," als Dezimalpunkt benutzt wohingegen bei der Berechnung der "." benutzt wird. und wie kann ich dieses umstellen?

    hier meine Spracheinstellungen:

    PS C:\Windows\System32\WindowsPowerShell\v1.0> (New-object System.Globalization.
    Cultureinfo("de-DE")).numberformat

    CurrencyDecimalDigits    : 2
    CurrencyDecimalSeparator : ,
    IsReadOnly               : False
    CurrencyGroupSizes       : {3}
    NumberGroupSizes         : {3}
    PercentGroupSizes        : {3}
    CurrencyGroupSeparator   : .
    CurrencySymbol           : ?
    NaNSymbol                : n. def.
    CurrencyNegativePattern  : 8
    NumberNegativePattern    : 1
    PercentPositivePattern   : 1
    PercentNegativePattern   : 1
    NegativeInfinitySymbol   : -unendlich
    NegativeSign             : -
    NumberDecimalDigits      : 2
    NumberDecimalSeparator   : ,
    NumberGroupSeparator     : .
    CurrencyPositivePattern  : 3
    PositiveInfinitySymbol   : +unendlich
    PositiveSign             : +
    PercentDecimalDigits     : 2
    PercentDecimalSeparator  : ,
    PercentGroupSeparator    : .
    PercentSymbol            : %
    PerMilleSymbol           : %
    NativeDigits             : {0, 1, 2, 3...}
    DigitSubstitution        : None

    Viele Gruesse

     Thomas


    regards Thomas Paetzold visit my blog on: http://sus42.wordpress.com

    Tuesday, February 12, 2013 8:46 PM

Answers

All replies

  • Das Komma ist in der PowerShell ein Operator!
    Mit dem Komma stellst du ein Array her !
    $Array = "Werner","Klaus", "Heinz"
    oder
    $Array = 1,2,3,4,5

    , (Komma)-operator Beschreibung: Als binärer Operator erstellt das Komma ein Array. Als unärer Operator erstellt das Komma ein Array mit einem einzelnen Element. Fügen Sie das Komma vor dem Element ein. Beispiele: $meinArray = 1,2,3   $EinfachesArray = ,1

    Siehe ganz unten : http://www.colorconsole.de/PS_Windows/en/about_operators.htm

    Der Punkt ist in allem mir bekannten Programmiersprachen das Dezimaltrennzeichen, auch auf jedem mir bekannten Taschenrechner. Diesen kann und sollte man nicht umstellen! Geht in der PowerShell auch gar nicht, da das Komma ja eine andere Aufgabe hat!

    Wenn du unbedingt möchtest, das der Punkt auch in der Ausgabe erscheint, dann kannst du an deinen Windows Ländereinstellungen herum fummeln. Dies würde aber ALLE Windows Programme betreffen!

    Um das auf die PowerShell zu begrenzen, kannst du dir eine format.ps1xml Datei für die .NET Typen decimal, double und Float erstellen:

    Siehe: http://www.colorconsole.de/PS_Windows/de/about_format.ps1xml.htm

    http://www.aspheute.com/artikel/20000726.htm


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!


    Wednesday, February 13, 2013 6:44 AM
  • hi Peter,

    dieses ist mir bekannt, aber wenn ich zwei zalwn dividiere und dann das Ergebnis auf zwei nachkommastellwn mittels {0:N2} abschneide ist das Ergebnis ein string. wenn ich nun soet-objec auf das ergebnisobjwct anwende wird alphabetisch sortiert und nivht nach Zahlenwerten. d.h. 10,2 wird vor 2,0 einsortiert.

    fällt dir hierzu noch etwas ein?

    viele grüße

      thomas


    regards Thomas Paetzold visit my blog on: http://sus42.wordpress.com

    Wednesday, February 13, 2013 9:08 PM
  • Nun eine Zahl sollte dann auch eine Zahl bleiben und nicht mittendrin in ein String verwandelt werden!
    Schau die mal die Methoden der System.Math Klasse an!
    http://msdn.microsoft.com/de-de/library/system.math_members%28v=vs.80%29.aspx
    http://www.computerperformance.co.uk/powershell/powershell_math.htm

    # 15 geteilt durch 7 auf 2 Stellen runden
    [Math]::Round(15 / 7,2)

    Wie gerundet wird, kann man bestimmen!
    http://msdn.microsoft.com/de-de/library/ms131275%28v=vs.80%29.aspx


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!


    • Edited by Peter Kriegel Thursday, February 14, 2013 6:24 AM
    • Marked as answer by Peddy1st Thursday, February 14, 2013 8:26 PM
    Thursday, February 14, 2013 6:14 AM