Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

"Памогите, кто знаете". Почему ответ не верный?   Найти похожие ветки 

 
LEXX_55   (2004-11-04 11:27) [0]

Есть строка А := Trunc(В*100) mod 100;. В - вещественное, А - целое. В результате "А" получается на 1 меньше чем должно быть. До 30, все "А" которые делятся на 3 - не верны, после 30 вообще... В чем причина и как победить. Заранее спасибо.


 
TUser ©   (2004-11-04 11:29) [1]


> "А" получается на 1 меньше чем должно быть.

А что долюно юыть и кому оно должно?


 
LEXX_55   (2004-11-04 11:32) [2]

к примеру: В = 0,15, А должно получиться 15, но в итоге А=14.


 
LEXX_55   (2004-11-04 11:35) [3]

Мне надо ответ на печать выдать. А он черт знает что показывает.


 
Pavel_Pavel ©   (2004-11-04 11:38) [4]

Trunc не нужен


 
LEXX_55   (2004-11-04 11:40) [5]

а что нужно?


 
LEXX_55   (2004-11-04 11:43) [6]

мне ужно округление. вдруг какой нибудь п-пользователь введет больше 2-х символов после запятой, или так получится.


 
TUser ©   (2004-11-04 11:45) [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:54) [8]


>   b:=0.15; b:=b*100;
>   a:=trunc(b{*100}) mod 100;

эффект тот же


 
TUser ©   (2004-11-04 11:56) [9]

Странно - у меня заработало (D7), правда почему так - я до сих пор репу чешу. В "Неочевидных особенностях ... " ничего вроде нет.


 
Verg ©   (2004-11-04 12:04) [10]

Ну не представимо число 0,15 в разрядной сетке конечной длины.
0.149999999999994 - это на самом деле


 
LEXX_55   (2004-11-04 12:07) [11]

почему другие числа правильно расчитываются, мне что, определить все числа и ввести на них поправку? Их же мама родная.


 
LEXX_55   (2004-11-04 12:20) [12]

конечно, я могу число перевесть в строку и попелить ее. но это не очень хороший и быстрый путь.


 
Verg ©   (2004-11-04 12:22) [13]


> почему другие числа правильно расчитываются


Потому, что они имеют точное представление в конечной разрядной сетке.
Например, 1/2, 1/4, 1/8 и т.д. до некоторого 1/(2^N), где N <> INFINITE, а также суммы комбинаций таких чисел.


> мне что, определить все числа и ввести на них поправку

А поправку ты как собрался представлять, и чем тебе не угодило округление?

round( x * 100 )



Страницы: 1 вся ветка

Текущий архив: 2004.11.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
4-1097307966
volser
2004-10-09 11:46
2004.11.21
Курсор мишки


1-1099981951
Dima
2004-11-09 09:32
2004.11.21
Как динамически центрировать TLabel на форме.


14-1098880794
Aldor
2004-10-27 16:39
2004.11.21
Ура! Еду в Новосибирск!


1-1099504208
++MASTER++
2004-11-03 20:50
2004.11.21
Создание банера


9-1090802077
Xerx
2004-07-26 04:34
2004.11.21
Экспорт модели