![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Памогите, кто знаете". Почему ответ не верный? [D7, WinME, WinXP]
LEXX_55 © (2004-11-04 11:27:00)Есть строка
А := Trunc(В*100) mod 100;. В- вещественное, А- целое. Врезультате " А" получается на 1 меньше чем должно быть. До 30, все " А" которые делятся на 3 - не верны, после 30 вообще... В чем причина и как победить. Заранее спасибо.
Verg (2004-11-04 12:22:00) [1]
> почему другие числа правильно расчитываются
Потому, что они имеют точное представление в конечной разрядной сетке.
Например, 1/2, 1/4, 1/8 и т.д. до некоторого 1/(2^N), где N <> INFINITE, а также суммы комбинаций таких чисел.
> мне что, определить все числа и ввести на них поправку
А поправку ты как собрался представлять, и чем тебе не угодило округление?
round( x * 100 )
LEXX_55 (2004-11-04 12:20:00) [2]конечно, я могу число перевесть в строку и попелить ее. но это не очень хороший и быстрый путь.
LEXX_55 (2004-11-04 12:07:00) [3]почему другие числа правильно расчитываются, мне что, определить все числа и ввести на них поправку? Их же мама родная.
Verg (2004-11-04 12:04:00) [4]Ну не представимо число 0,15 в разрядной сетке конечной длины.
0.149999999999994 - это на самом деле
TUser (2004-11-04 11:56:00) [5]Странно - у меня заработало (D7), правда почему так - я до сих пор репу чешу. В 'Неочевидных особенностях ... ' ничего вроде нет.
LEXX_55 (2004-11-04 11:54:00) [6]
> b:=0.15; b:=b*100;
> a:=trunc(b{*100}) mod 100;
эффект тот же
TUser (2004-11-04 11:45:00) [7]procedure TForm1.Button1Click(Sender: TObject);
var b:real;
a:integer;
begin
b:=0.15; b:=b*100;
a:=trunc(b{*100}) mod 100;
label1.Caption:=inttostr(a);
end;
LEXX_55 (2004-11-04 11:43:00) [8]мне ужно округление. вдруг какой нибудь п-пользователь введет больше 2-х символов после запятой, или так получится.
LEXX_55 (2004-11-04 11:40:00) [9]а что нужно?
Pavel_Pavel (2004-11-04 11:38:00) [10]Trunc не нужен
LEXX_55 (2004-11-04 11:35:00) [11]Мне надо ответ на печать выдать. А он черт знает что показывает.
LEXX_55 (2004-11-04 11:32:00) [12]к примеру: В = 0,15, А должно получиться 15, но в итоге А=14.
TUser (2004-11-04 11:29:00) [13]
> "А" получается на 1 меньше чем должно быть.
А что долюно юыть и кому оно должно?