Форум: "Основная";
Текущий архив: 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.039 c