- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
function B2R(Bytes: Int64): string;
const
k: int64 = 1024;
begin
if Bytes < k then result := IntToStr(Bytes) + 'B' else
if Bytes < k*k then result := FloatToStr(Round(Bytes*10/k)/10) + 'K' else
if Bytes < k*k*k then result := FloatToStr(Round(Bytes*10/(k*k))/10) + 'M' else
if Bytes < k*k*k*k then result := FloatToStr(Round(Bytes*10/(k*k*k))/10) + 'G' else
if Bytes < k*k*k*k*k then result := FloatToStr(Round(Bytes*10/(k*k*k*k))/10) + 'T' else
result := IntToStr(Bytes);
end;
Функция из плагина для JAJC особенно "понравилось" созерцание деления и умножения на 10 ;)
guest 20.05.2009 22:47 # 0
Очень порадовало, спасибо))
guest 20.05.2009 23:33 # 0
guest 21.05.2009 12:21 # 0
[quote=Автор]особенно "понравилось" созерцание деления и умножения на 10[/quote]
Ну забыл человек привести к нецелочисленному типу... А идея-то в общем разумная, только поменять Round на Int. Или я чего-то не заметил?
guest 21.05.2009 17:57 # 0
Мне кажется, объявив дополнительный массив-константу с буквами по возможным степеням k, этот код можно сократить до 2х строк буквально, получить степень k из int(Bytes/1024) ну а дальше все просто. Вот примерно так ... Может и ошибаюсь.
guest 22.05.2009 14:31 # 0
guest 22.05.2009 20:32 # 0
Если я не идиёт, то
[quote=Говногость]round(x*10)/10 [/quote]
не округляет до десятых, ибо все операции тут целочисленные, включая деление. Вот если вставить Int вместо Round...
guest 23.05.2009 00:52 # 0
x=1.12
x*10=11.2
round(x*10)=11
round(x*10)/10=1.1
guest 24.05.2009 13:03 # 0