Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
9-1088497561
Bizon's
2004-06-29 12:26
2004.11.21
Фоновый рисунок


1-1099363557
KisaNetik
2004-11-02 05:45
2004.11.21
резко сам по сибе уменьшился размер проги в Delphi


6-1093911720
Ace Cooper
2004-08-31 04:22
2004.11.21
Передача данных из Делфи в php-скрипт и получение результата.


1-1099852890
aha
2004-11-07 21:41
2004.11.21
мне нужно поставить фильтр на messagebox , то есть


14-1099252959
Bend
2004-10-31 23:02
2004.11.21
RichEdit &amp; гиперссылки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский