@ProCxx

Страница 2414 из 2477
Ioann V
06.10.2018
19:46:42
нет, нельзя сравнивать числа с плавающей точкой на полное равенство вообще.
так, ну это точно минус. Так как можно, да, не всегда - да.

Aidar
06.10.2018
20:02:53
так, ну это точно минус. Так как можно, да, не всегда - да.
Тупо логически относительная погрешность деления выше 100 не является степенью двойки На деле не знаю

babysitter
06.10.2018
20:19:31
так, ну это точно минус. Так как можно, да, не всегда - да.
я тут местный дурачок, не обращай внимания. можешь рассказать в каких случаях можно сравнивать результат плавающей арифметики с константой?

Google
Ioann V
06.10.2018
20:23:43
Ну это из банального.

babysitter
06.10.2018
20:24:36
так себе арифмеика, конечно

Evgeny
06.10.2018
20:24:53
ну да, потому что в двоичном представлении AFAIK 0.5 слишком легко представить

Evgeny
06.10.2018
20:28:37
0.3 степенями двойки представить сложнее, а вот 0.5 это 2^-1

babysitter
06.10.2018
20:32:05
https://en.cppreference.com/w/cpp/types/numeric_limits/epsilon realtimecollisiondetection.net/blog/?p=89

Побитый
06.10.2018
20:34:41
float a = 0.5; float b = 0.5; a == b; Будут равны, если все по ieee754 делать.
Тут скорее компилятор в true сам соптимизирует. В общем случае сравнивать вещественные числа в лоб нельзя.

Ioann V
06.10.2018
20:36:03
В общем случае, результатом вычислений, нельзя, да. Меня просили привести пример когда можно.

Matthew
06.10.2018
20:36:17
Тут скорее компилятор в true сам соптимизирует. В общем случае сравнивать вещественные числа в лоб нельзя.
Если числа получены одним и тем же способом, то на == надеятся таки можно К примеру, если оба значения считаны с потока

Ioann V
06.10.2018
20:37:30
вы б про мой вопрос не забывали

Matthew
06.10.2018
20:38:45
Ну судя по комментарию Гугла почему нет Звучит логично

Ioann V
06.10.2018
20:39:18
Но и почему да - тоже непонятно.

Google
babysitter
06.10.2018
20:39:24
этот
какого рода гарантия? на x86 для конкретно этих литералов — да, равны. но это же дичь, пчем эти хаки

@Ioann_V ты там меня спрашивал для каких литералов не будет работать пока не потёр. например 0.2+0.2+0.2 == 0.6 должен дать false

Ioann V
06.10.2018
21:06:22
омг

я спрашивал про мой пример

а у тебя тут summation

Так что, так. В данном случае неравенство очевидно, из за неточности представления в бин.

babysitter
06.10.2018
21:12:18
а у тебя тут summation
0.6 / 3. == 0.2 устроит?

Ioann V
06.10.2018
21:13:25
не устроит

еще раз, коль ты как выражался местный... в моем примере числа в дроби целые, представлены даблом, и не имеют погрешности представления. Более того, там делится на 10 в степени

И повторюсь, вопрос в том, почему гуглоисты пмшут что все ок.

Dmitrii
06.10.2018
21:22:44
/cppref

FailsBot
06.10.2018
21:22:45
https://en.cppreference.com/w/cpp/string/char_traits/length

Kotbegemot
06.10.2018
22:21:08
а для вариайдик темплайты ?

Ioann V
06.10.2018
22:21:48
Как раз нет. В этом и дело
вообще то, да. В каких случаях нет?

Кроме тех, когда степень огромна.

Alex Фэils?︙
06.10.2018
23:02:50
а для вариайдик темплайты ?
надо сделать рекурсивную специализацию

/dev
07.10.2018
04:34:52
есть ли гарантия, что 123.23 == 12323. / 100.?
Нет, конечно, 123.23 нет в природе

Matwey
07.10.2018
06:54:02
есть ли гарантия, что 123.23 == 12323. / 100.?
123.23 округлится до ближайшего представимого значения

Google
Matwey
07.10.2018
06:54:44
Скорее всего например 0.5 == 1.0/2, но лучше так не делать вообще.

John
07.10.2018
10:19:50
В Boost.Spirit есть стандартное правило для парсинга имени переменной?

John
07.10.2018
11:48:04
Id?
Не понимаю, но нет, скорее всего

J
07.10.2018
11:50:44
возможно как-то hbitmap перевести в массив байтов, чтобы отправить через сокет?

без лишних либ

gdi вылетает почему-то

Alex Фэils?︙
07.10.2018
11:51:35
без лишних либ
http://www.vsokovikov.narod.ru/New_MSDN_API/Bitmaps/fn_getdibits.htm

J
07.10.2018
11:55:18
а если send для отпрвки принимает char*, то достаточно будет результат getDIBits привести к char*?

где-то писали, что в c++ char это посути байты

Connor41
07.10.2018
11:57:34
а есть что-то ещё?)

Aidar
07.10.2018
11:58:01
Ilia
07.10.2018
11:58:18
возможно как-то hbitmap перевести в массив байтов, чтобы отправить через сокет?
Можно... Но слать bitmap куда-то как-то не айс наверное....

Connor41
07.10.2018
11:58:35
char это по сути целочисленный тип. а символы просто представленный каким-то значением

Aidar
07.10.2018
12:14:34
Вопрос из прографона: union foobar{ struct foo{ int bar() { return 5} } foo a; int b; } foobar x; x.b=8; x.a.bar()//UB?

Alex Фэils?︙
07.10.2018
12:21:15
да, потому что "не определено обращение к члену юниона, если был инициализирован другой"

Alexey
07.10.2018
12:22:03
Патамушта кроссплатформенность

Часто этим UB пользуются

union { char a[sizeof(int)]; int b; } e; e.b = 1; if (e.a[0]) // little endian platform else // big endian platformкак пример

Google
Aidar
07.10.2018
12:23:51
да, потому что "не определено обращение к члену юниона, если был инициализирован другой"
Тут ключевой момент в том что можно ли вызвать функцию в поде которая не трогает поля

Я так понял нет

Alexey
07.10.2018
12:25:22
а почему бы её не сделать статической, если она не трогает поля?

Aidar
07.10.2018
12:25:53
Вопрос звучит именно так

Alexey
07.10.2018
12:26:54
ну, в целом можно считать, что UB

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

если у тебя в юнионе нетривиальный тип с vtable, то отладка может быть очень интересной

Aidar
07.10.2018
12:27:56
Уб не предполагает разрушений

Alexey
07.10.2018
12:28:08
уб не запрещает разрушения

https://habr.com/company/infopulse/blog/338812/

Страница 2414 из 2477