![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как "урезать" лишние знаки после запятой у чисел типа real?
Megabyte © (2006-06-14 18:18:00)Сабж.
Есть функция format, но там параметр типа string. Как-то неохота туда/сюда переформатировать...
SergP. (2006-06-15 17:43:00) [1]
> Megabyte © (15.06.06 15:09) [24]
>
> > StriderMan © (15.06.06 13:24) [23]
> > > Megabyte
> >попробуй все-таки мой подход
>
> Ну ничего больше не остается. %)
Если нужно без проблем "отсекать" лишние десятичные знаки - используй Currency и не мучайся... Но числа у которых более 4-х дес. знаков там уже не получится хранить...
Desdechado (2006-06-15 17:01:00) [2]нет, не сопроцессоров, а Win32
Loginov Dmitry (2006-06-15 16:55:00) [3]Да, то было раньше - еще по появления сопроцессоров...
Desdechado (2006-06-15 16:52:00) [4]> различия между Real и Double?
если мне память не изменяет, раньше Real был тот, который сейчас Real48
Type Range Significant digits Size in bytes
Real 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10
Loginov Dmitry (2006-06-15 16:46:00) [5]evvcom © (15.06.06 11:03) [10]
Это тебе кажется. А чтобы не казалось, используй Double или Extended. А с Real от этого не избавишься.
Интересно, в чем вы видите различия между Real и Double?
Megabyte (2006-06-15 15:09:00) [6]
> StriderMan © (15.06.06 13:24) [23]
> > Megabyte
>попробуй все-таки мой подход
Ну ничего больше не остается. %)
StriderMan (2006-06-15 13:24:00) [7]
> Megabyte
попробуй все-таки мой подход
Megabyte (2006-06-15 13:20:00) [8]
> Zeqfreed © (15.06.06 13:04) [21]
Кошмар!!! :) Внимательно читаем!
Да в ячейках все в порядке, траблы с отображением в строко формул вверху, кот. отображает выделенную ячейку!
Zeqfreed (2006-06-15 13:04:00) [9]> Я же написал уже, мне пофигу, как они хранятся, мне надо
> это для отображения в экселе.
Для этого в Excel'е есть соответствующие параметры форматирования текста в ячейках.
Megabyte (2006-06-15 12:58:00) [10]Я же написал уже, мне пофигу, как они хранятся, мне надо это для отображения в экселе.
Zeqfreed (2006-06-15 12:11:00) [11]Не могу понять, зачем может понадобиться «отрезание разрядов во внутреннем представлении числа». На то оно и внутреннее, что никто его не видит. Какие бы то ни было преобразования должны делаться только при строковом представлении чисел.
evvcom (2006-06-15 12:09:00) [12]> [11] Desdechado © (15.06.06 11:10)
> evvcom © (15.06.06 11:03) [10]
> > Double или Extended
> это значительно уменьшает погрешность, обычно до недоступных
> разрядов, но не избавляет от проблемы совсем
> способ хранения, имхо, все тот же - мантисса, основание...
Я знаю. Потому и написал автору:
> Это тебе кажется. А чтобы не казалось
StriderMan (2006-06-15 12:07:00) [13]
> FormatFloat ???
возвращает строку
icWasya (2006-06-15 12:05:00) [14]FormatFloat ???
StriderMan (2006-06-15 11:42:00) [15]
> Desdechado ©
попробовал. работает.
ShowMessage(FloatToStr(trunc(56.2400000048 * 100) / 100));
теперь попробуй сам.
Desdechado (2006-06-15 11:33:00) [16]StriderMan © (15.06.06 11:26) [12]
>> Неправильно.
> Почему?
А ты попробуй. А потом почитай-таки теорию по способам хранения чисел с плавающей точкой.
Megabyte (2006-06-15 11:28:00) [17]Короче, мне надо только отображать в Экселе. В самих ячейках числа отображаются нормально, а в строке формул они выводятся с офигенно длинной частью после запятой, кот. не нравится пользователю... м.б. что в экселе делать?
StriderMan (2006-06-15 11:26:00) [18]
> Ega23 © (15.06.06 10:53) [9]
> > Result := trunc(Value * 100) / 100;
> Неправильно.
Почему?
56,24000048 * 100 = 5624,000048
trunc(5624,000048) = 5624
5624/100 = 56,24
Desdechado (2006-06-15 11:10:00) [19]Megabyte © (15.06.06 10:35) [7]
для отображения - Format
для хранения отсечь погрешность не получится, это фича
evvcom © (15.06.06 11:03) [10]
> Double или Extended
это значительно уменьшает погрешность, обычно до недоступных разрядов, но не избавляет от проблемы совсем
способ хранения, имхо, все тот же - мантисса, основание ...
evvcom (2006-06-15 11:03:00) [20]> дано: 56,24000048
> хочу: 56,24
Это тебе кажется. А чтобы не казалось, используй Double или Extended. А с Real от этого не избавишься.