Size: a a a

var chat = new Chat();

2020 March 23

E

Etki in var chat = new Chat();
polunin.ai
Как компилятор должен догадаться что выше должен быть ноль? Он честно посчитал и там оказалось то число. Он его и подставил)
x + y - x -y

действительно, как тут догадаться
источник

p

polunin.ai in var chat = new Chat();
Etki
x + y - x -y

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

E

Etki in var chat = new Chat();
я думаю как компилятор и делаю констант фолдинг
источник

p

polunin.ai in var chat = new Chat();
Да. Вы посчитаете результат на этапе компиляции также как он посчитался бы в рантайме
источник

E

Etki in var chat = new Chat();
смотри, даже сишка умеет:

etki@vortex:~$ cat /tmp/main.c 
#include <stdio.h>

void main() {
 double x = 17/31.0;
 double y = 31/17.0;
 printf("%f", x + y - x - y);
}
etki@vortex:~$ /tmp/main.exe
0.000000
источник

E

Etki in var chat = new Chat();
а не, обосрался, она просто не делает сокращения с E
источник

E

Etki in var chat = new Chat();
энивей, в рантайме это тоже должно быть выкинуто
источник

p

polunin.ai in var chat = new Chat();
Etki
энивей, в рантайме это тоже должно быть выкинуто
Напишите компилятор который это сделает. Я с радостью взгляну на вашу реализацию вещественных чисел так, чтобы они считались со скоростью double и точностью decimal. Это произведет переворот в программировании, обещаю😉
источник

E

Etki in var chat = new Chat();
при чем тут скорость?
источник

E

Etki in var chat = new Chat();
шперва добейся [x]
источник

p

polunin.ai in var chat = new Chat();
Etki
при чем тут скорость?
На данный момент есть два способа представления десятчных дробей. double, decimal. Первый быстрый, второй точный. Как думаете почему за 80 лет не придумали как сделать быстро и точно? Потому что это невозможно в текущей ситуации.
источник

E

Etki in var chat = new Chat();
при чем тут быстро и точно?
источник

E

Etki in var chat = new Chat();
мы говорим про выражение, в котором прибавляются и вычитаются два уже посчитанных значения
источник

A

Alejandro in var chat = new Chat();
Etki
пацаны, зырьте, я вам рантайм сломал:

> var x = 17/31.0;
> var y = 31/17.0;
> Console.WriteLine(x + y - x - y);
2.22044604925031E-16
Почитай как устроены числа с плавающей точкой, узнаешь для себя много интересного
Такое поведение норма из-за того, что ты не можешь точно представить десятичное дробное число в двоичной системе
источник

E

Etki in var chat = new Chat();
бляяяяяяяяяяяяяяя
источник

A

Alejandro in var chat = new Chat();
Если тебя прям так сильно интересуют оптимизации компилятора, можешь попробовать в сишке скомпилить с -о2
источник

E

Etki in var chat = new Chat();
короче, единственная рациональная причина оставить так как есть - это чтобы человек с плавающим питухом мозга увидел привычные глазу погрешности
источник

E

Etki in var chat = new Chat();
polunin.ai
На данный момент есть два способа представления десятчных дробей. double, decimal. Первый быстрый, второй точный. Как думаете почему за 80 лет не придумали как сделать быстро и точно? Потому что это невозможно в текущей ситуации.
и, строго говоря, есть еще rational, который работает не только с десятичными дробями, а вообще со всеми
источник

p

polunin.ai in var chat = new Chat();
Etki
короче, единственная рациональная причина оставить так как есть - это чтобы человек с плавающим питухом мозга увидел привычные глазу погрешности
Не разбираешься  в предметной области но делаешь выводы
источник

E

Etki in var chat = new Chat();
polunin.ai
Не разбираешься  в предметной области но делаешь выводы
лол что
источник