Это не мой код. Я переписываю его под Паскаль. Там, кстати, не из-за этого проблема. Тот метод работает правильно.
Добавлю. Сравнение вещественных чисел правильно делать в формате:
Abs(first - second) < Eps
.
А еще лучше перегрузить операцию =
Пожалуй, соглашусь. Можно, например, так:
const
Eps = 0.001;
function operator=(x, y: real): boolean; extensionmethod := Abs(x - y) < Eps; // Если закомментировать, то вместо True будет False.
begin
Writeln(1.0002 = 1.0004);
end.
.
упрощаю программу, убрал вообще графическое окно естественно и uses graphABC;
перестало работать это:
var main_form := new System.Windows.Forms.Form;
main_form.StartPosition := System.Windows.Forms.FormStartPosition.Manual;
main_form.Bounds := new System.Drawing.Rectangle(815, 23, 460, 170);//размер окна
main_form.Closing += procedure(o, e)-> System.Diagnostics.Process.GetCurrentProcess.Kill;
ошибку выдает тут: main_form.Bounds := new System.Drawing.Rectangle(815, 23, 460, 170);//размер окна ???
неизвестное имя Drawing, как-то можно без этого?
Вы хотите сказать, что операторы в Паскале работают не так, как в C#?
Я ничего об этом не говорил, я сказал лишь, как правильно сравнивать вещественные числа. К примеру, если числа будут отличаться лишь последней цифрой, то они будут считаться не равными. Это, думаю, не совсем то, что Вы бы хотели. Вы не можете гарантировать, что отличий в последних цифрах чисел не будет. Поэтому лучше проверять на разницу двух чисел - если она мала, то считать числа равными.
Я ещё раз повторяю, код на C# не мой, но он работает как часы. Моя задача - переписать его на Паскаль. Вопрос: почему зеркальные коды работают совершенно по-разному.
Я Вас услышал, но счёл нужным сказать про сравнение вещественных чисел.
Удивительно, что сами разработчики не могут найти проблему.
{$Reference 'System.Drawing.dll'}
Uses System.Drawing;
Единственное что пока я могу сказать - это то, что меня немного удивило такое частое использование exit, даже в конце подпрограммы GaussRandom.
Это было сделано для исключения ошибок, связанных с заменой return на Result.
Я так и подумал.
Ну у меня например в паскале выводится -20,8074002626979 0,341588060543909 -6,3959925341402
У вас версия актуальная?
Да. Вчера обновил.
А Вы не C# случайно запустили? Там именно такие результаты.
Нет, паскаль
Хм, забавно. У меня те-же результаты, но только если отключить модуль.