поехало...Всё живое на земле - это глюки моего космического корабля...
zub зачем вы vitaly_l ссылку дали. Теперь у него "сноски" пошли.

Модератор: Модераторы
поехало...Всё живое на земле - это глюки моего космического корабля...
serbod писал(а):Процессоры Intel всегда считают в extended (80-битном) виде. И правил округления там 5 видов.
Если нужна точная десятичная арифметика, то нужно (необходимо даже) использовать Currency.
var
s:string;
Q: Currency;
QQ: Currency;
b:byte;
bb:byte;
begin
Q := 0.7-0.3;
QQ := 0.5-0.1;
if (Q/QQ)=1 then
writeln('=')
else
writeln('<>');
// вернёт ложно =
Q := 0.4;
QQ := 0.4;
if (Q/QQ)=1 then
writeln('=')
else
writeln('<>');
// вернёт ложно =
b := 4;
bb := 4;
if (b div bb)=1 then
writeln('=')
else
writeln('<>');
// вернёт верное =
Q :=(b div bb) / 10;
// вернёт единственно верное решение 0.1, которое явно не равно 1
writestr(s,Q :2:2);
writeln('Q = ' +s);
readln;
end.
pupsik писал(а):на флуд смахивает ваша истина
var
b, z : Double;
begin
if 0.2 + 0.1 = 0.3 then
WriteLn('=')
else
WriteLn('<>');
b := 0.2 + 0.1;
z := 0.3;
if b = z then
WriteLn('b =')
else
WriteLn('b <>');
b := 0.2 + 0.1;
if b = 0.3 then
WriteLn('xz =')
else
WriteLn('xz <>');
ReadLn;
end.
pupsik писал(а):Ок...
Тогда скажите, Бог: что в коде ниже не так?
а потом вернёмся к вашим баранам.
var
s:string;
Q: Currency;
QQ: Currency;
b:byte;
bb:byte;
begin
Q := 0.7-0.3;
QQ := 0.5-0.1;
if (Q/QQ)=1 then
writeln('=')
else
writeln('<>');
// вернёт ложно =
Q := 0.4;
QQ := 0.4;
if (Q/QQ)=1 then
writeln('=')
else
writeln('<>');
// вернёт ложно =
b := 4;
bb := 4;
if (b div bb)=1 then
writeln('=')
else
writeln('<>');
// вернёт верное =
Q :=(b div bb) / 10;
// вернёт единственно верное решение 0.1, которое явно не равно 1
writestr(s,Q :2:2);
writeln('Q = ' +s);
readln;
end.
э..э: не понял. Откуда вы остаток берёте? Согласно какой теории?а на самом деле при делении 0.3 на 0.3 должно возвращаться 0.1. Уловили?
по мне: только что вы "сели в лужу" и не заметили.Только что мы в очередной раз положили весь Мир на лопатки.
что в коде ниже не так?
Q :=(b div bb) / 10
pupsik писал(а):п.с.
Кстати: каков ответ на вопрос:
что в коде ниже не так?
var
s:string;
Q: Currency;
QQ: Currency;
b:byte;
bb:byte;
begin
Q := 0.7-0.3;
QQ := 0.5-0.1;
if (Q/QQ)=1 then
writeln('=')
else
writeln('<>');
// вернёт ложно = 1
Q := 0.4;
QQ := 0.4;
if (Q/QQ)=1 then
writeln('=')
else
writeln('<>');
// вернёт ложно = 1
b := 4;
bb := 4;
if (b div bb)=1 then
writeln('=')
else
writeln('<>');
// вернёт верное 1 = 1
Q :=(b div bb) / 10;
// вернёт единственно верное решение 0.1, которое явно не равно 1
// пятая задача
if Q =1 then
writeln('=')
else
writeln('<>');
// вернёт верное 0.1 <> 1
writestr(s,Q :2:2);
writeln('Q = ' +s);
readln;
end.
хоть десятую. Ответьте на вопросЯ добавил там пятую задачу
... потом продолжим...что в коде ниже не так?
Для вас одинаково: / и div???
Лекс Айрин писал(а):vitaly_l, Welcome to Wonderland!
Не стоит путать арбузы с едоками. Если у меня треть арбуза и я всю ее сожрал, то едоков 1(один), а не моя десятая часть.
pupsik писал(а):Для вас одинаково: / и div???
var
s:string;
Q: Currency;
QQ: Currency;
b:byte;
bb:byte;
begin
Q := 0.7-0.3;
QQ := 0.5-0.1;
if (Q/QQ)=1 then
writeln('=')
else
writeln('<>');
// вернёт ложно = 1
Q := 0.4;
QQ := 0.4;
if (Q/QQ)=1 then
writeln('=')
else
writeln('<>');
// вернёт ложно = 1
b := 4;
bb := 4;
if (b div bb)=1 then
writeln('=')
else
writeln('<>');
// вернёт верное 1 = 1
Q :=(b div bb) / 10;
// вернёт единственно верное решение 0.1, которое явно не равно 1
// пятая задача
if Q =1 then
writeln('=')
else
writeln('<>');
// вернёт верное 0.1 <> 1
writestr(s,Q :2:2);
writeln('Q = ' +s);
readln;
end.
vitaly_l писал(а): т.к. когда вы делите на калькуляторе 0.3 / 0.3, то он возвращает ложно 1.
Лекс Айрин писал(а):Мой абак тоже возвращает 1. И счеты... такие, деревянные перекладные.
var
s:string;
Q: Currency;
QQ: Currency;
b:byte;
bb:byte;
begin
Q := 0.7-0.3;
QQ := 0.5-0.1;
if (Q/QQ)=1 then
writeln('=')
else
writeln('<>');
// вернёт ложно = 1
Q := 0.4;
QQ := 0.4;
if (Q/QQ)=1 then
writeln('=')
else
writeln('<>');
// вернёт ложно = 1
b := 4;
bb := 4;
if (b div bb)=1 then
writeln('=')
else
writeln('<>');
// вернёт верное 1 = 1
Q :=(b div bb) / 10;
// вернёт единственно верное решение 0.1, которое явно не равно 1
// пятая задача
if Q =1 then
writeln('=')
else
writeln('<>');
// вернёт верное 0.1 <> 1
writestr(s,Q :2:2);
writeln('Q = ' +s);
readln;
end.
vitaly_l писал(а):Ну так это и есть ошибка всего Мира!
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3