より正確なバイトを使用して、データベースに格納されているときに、柔軟性と拡張性が高いです。
ときの出力は、いくつかの適応を行う必要があります。
テストコード1.ノート
- SizeInBytesは、シーンのNoneに検討する必要があります。
- 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メガバイトは、良い選択時に出力されます。
短所:
- このような計算結果として高精度な出力、10240000バイト10240000 - > 9.765625
- 1メガバイト又はGデータの表示モードでファイルサイズの制限は適していません
利点:
- 戻り値の参加を計算するように構成されています
デフ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で再現