1.04857682467839e+020 ---> Ausgeschrieben

  • Hi,

    ich habe ein Problem mit dem berechnen(lassen) von großen zahlen


    wenn ich das Testhalber ausführe

    [autoit]


    MsgBox(0,0,DataShort(100000078647484))

    [/autoit][autoit][/autoit][autoit]

    Func DataShort($sSize)
    $sSize = Number($sSize)
    If $sSize >= 1024 * 1024 *1024 *1024 *1024 * 1024 Then Return Round($sSize / 1024 * 1024 *1024 *1024 *1024 * 1024,1) & " EB"
    If $sSize >= 1024 * 1024 *1024 *1024 *1024 Then Return Round($sSize / 1024 * 1024 *1024 *1024 *1024,5) & " PB"
    If $sSize >= 1024 * 1024 *1024 *1024 Then Return Round($sSize / 1024 * 1024 *1024 *1024,2) & " TB"
    If $sSize >= 1073741824 Then Return Round($sSize / 1073741824, 1) & " GB"
    If $sSize >= 1048576 Then Return Round($sSize / 1048576) & " MB"
    If $sSize >= 1024 Then Return Round($sSize / 1024) & " KB"
    EndFunc ;==>DataShort

    [/autoit]


    bekomme ich eine MsgBox mit folgendem Inhalt
    1.04857682467839e+020.

    Ich würde das gerne ausgeschrieben haben aber ich bekomme es einfach nicht hin;(

    naja vlt kann mir einer helfen.

    wünsche euch einen fleißigen Weihnachtsmann

  • Ich hatte auch mal so ein Problem. Was half war die Funktion int. Die ist aber nur nützlich, wenn du ganze Zahlen hast (denke ich) :/

    Edit: Ich glaube du hast da einen Rechenfehler gemacht..
    $sSize / 1024 * 1024 *1024 *1024 *1024
    würde bei $sSize = 5629499534213120 folgendes Bedeuten:
    5629499534213120 / 1024 * 1024 * 1024 * 1024
    => 5497558138880 * 1024 * 1024 * 1024
    was folglich nicht stimmt. Klammer dazu einfach die Multiplikation aus:

    [autoit]

    MsgBox(0,0,DataShort(100000078647484))

    [/autoit][autoit][/autoit][autoit]

    Func DataShort($sSize)
    $sSize = Number($sSize)
    If $sSize >= 1024 * 1024 *1024 *1024 *1024 * 1024 Then Return Round($sSize / (1024 * 1024 *1024 *1024 *1024 * 1024),1) & " EB"
    If $sSize >= 1024 * 1024 *1024 *1024 *1024 Then Return Round($sSize / (1024 * 1024 *1024 *1024 *1024),5) & " PB"
    If $sSize >= 1024 * 1024 *1024 *1024 Then Return Round($sSize / (1024 * 1024 *1024 *1024),2) & " TB"
    If $sSize >= 1073741824 Then Return Round($sSize / 1073741824, 1) & " GB"
    If $sSize >= 1048576 Then Return Round($sSize / 1048576) & " MB"
    If $sSize >= 1024 Then Return Round($sSize / 1024) & " KB"
    EndFunc ;==>DataShort

    [/autoit]

    Schwupps schon gehts :)