出力ファイルのサイズとそのPython実装フレンドリー

より正確なバイトを使用して、データベースに格納されているときに、柔軟性と拡張性が高いです。

ときの出力は、いくつかの適応を行う必要があります。

テストコード1.ノート

  1. SizeInBytesは、シーンのNoneに検討する必要があります。
  2. 1024.0ではなく、精度を失うことを避けるために、1024で割った値。

getSizeInMb(sizeInBytes)、ユニバーサルテストコードのために実現される機能

デフgetSizeInMb(sizeInBytes):
     リターン0 

デフテスト(sizeInBytes):
     プリント ' %sの- >%sの'(sizeInBytes、getSizeInMb(sizeInBytes))

テスト(なし)
テスト(0)
テスト( 10240000 
テスト( * 1024 1024 * 10)

MB出力での2 - floatを返します

    一般的に、1の間で電子書籍のサイズ - MBに統一50メガバイトは、良い選択時に出力されます。

短所:

  1. このような計算結果として高精度な出力、10240000バイト10240000 - > 9.765625
  2. 1メガバイト又はGデータの表示モードでファイルサイズの制限は適していません

利点:

  1. 戻り値の参加を計算するように構成されています
デフgetSizeInMb(sizeInBytes):
     リターン(sizeInBytes または 0)/(* 1024.0 1024.0)

リターンSTR - MBで3.小数を予約しました

検討中の精度の問題は、あなたが小数を保持するように選択することができます。

DEF getSizeInMb(sizeInBytes):
     リターン ' %.1f '%((sizeInBytes または 0)/(1024.0 * 1024.0))  使用する1次元タプルが提案されています

戻り値は、書き込みをお勧めします '%.1f' %(数)よりもむしろ '%.1f' %(数)

どちらが正しく実行できますが、後者は唯一容易に行う関数のパラメータの数と間違われるが、判断に誤差が生じることは困難です。

MBで3. 1つの小数点以下まで予約 - STRを返します

ほとんどのオペレーティングシステムは、通常は表示され、最大 1つの小数を

DEF getSizeInMb(sizeInBytes):
    sizeInMb = ' %.1f '%((sizeInBytes または 0)/(1024.0 * 1024.0))使用する1次元タプルが提案されている
    戻り sizeInMbの[ - 2] もし sizeInMb.endswith(' 。 0 " sizeInMb   #の必要のpython2.5の+

4.ユニットは、自動的に最適選択します

デフgetSizeInNiceString(sizeInBytes):
     "" " 
    のような文字列に与えられた:バイトを変換します9.9bytes / KB / MB / GB 
    """ 
    のために(カットオフ、ラベル) [(* 1024×1024×1024、" GB " )、  * 1024 1024、" MB " )、  1024、" KB " 
                            ]:
        もし sizeInBytes> = カットオフ:
             リターン " %.1f%S "%(sizeInBytesは* 1.0 / カットオフ、ラベル) 

    の場合sizeInBytes == 1 復帰 " 1バイト" 
    
        バイト = " .1f%"%(sizeInBytes または0)
         リターン(バイト[ - 2] もし(bytes.endswith ' 0.0 'バイト)+ ' バイト"

 

アルゴリズムの説明:

英語の文法、一つだけ単数形の観点から、1。0その他/小数点以下は複数形を使用しています。参加するバイトレベル

上記2.精度、KBレベルとは、小数を保持します。予約はバイトまでの小数第1位。

    この処理ルールは、非常に小数の桁には適していない、など10.0バイト、10.01バイトゼロです。入力結果は10バイトです。

    他の例では、精度の問題は存在しません。

試験データ結果を以下に示すように

ます。https://www.cnblogs.com/misspy/p/3661770.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34220834/article/details/93789732