- 1
- 2
- 3
let x = 0.1;
let y = 0.2;
let z = x + y
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−7
let x = 0.1;
let y = 0.2;
let z = x + y
чему равно?
ObeseYoung 21.12.2021 17:08 # +2
ASD_77 21.12.2021 17:15 # 0
Fike 21.12.2021 17:13 # +3
ASD_77 21.12.2021 17:15 # 0
Fike 21.12.2021 17:18 # 0
Rooster 21.12.2021 17:21 # +3
Rooster 21.12.2021 17:16 # 0
1024-- 21.12.2021 17:17 # 0
Или вообще мелкие числа, у которых мантисса помещается в инт, он загоняет в инт, эмулируя фиксированного питуха в десятичной системе. Т.е. скажем, 1234.5 представляется как int (1234.5 * 10000).
ASD_77 21.12.2021 17:32 # 0
3.14159265 21.12.2021 17:55 # +1
Сначала линкер, теперь блять до intа докатились!
https://spin.atomicobject.com/2018/11/05/using-an-int-type-in-typescript/
guest6 21.12.2021 18:00 # +3
Fike 21.12.2021 21:22 # +1
1024-- 21.12.2021 18:00 # +1
* использовать дроби
* использовать символьные вычисления
* оставить как есть
3.14159265 21.12.2021 18:08 # +1
* использовать язык для белых
1024-- 21.12.2021 18:11 # 0
3.14159265 21.12.2021 18:12 # 0
Язык называется typeScript.
Казалось бы причём здесь типы?
1024-- 21.12.2021 18:24 # 0
Да, багор )))
Интересно, если поставить американскую локаль, а потом вызвать toLocaleString, а потом кастануть к Number, будет 0.3?
________
* А что, они уже все хромые? Девтулы выглядят так же с точностью до вида иконок и подсказывают результат так же
3.14159265 21.12.2021 18:27 # +1
Всегда так делаю.
> а потом вызвать toLocaleString, а потом кастануть к Number, будет 0.3?
Да
1024-- 21.12.2021 18:32 # 0
1024-- 21.12.2021 18:29 # +1
Шах и мат, PHP!
Заметим, что и по типам тут лучше. В [...] передаётся String - как и планировалось в ECMAScript.
3.14159265 21.12.2021 18:35 # 0
А такое в виндах работает?
1024-- 21.12.2021 18:36 # 0
3.14159265 21.12.2021 18:37 # 0
>Шах и мат, PHP!
Говно какое-то трёхразрядное.
Upd: можно так
bormand 21.12.2021 18:55 # 0
gEKA6PbCKuu_nemyx 21.12.2021 19:37 # 0
3.14159265 22.12.2021 16:12 # 0
В версии 2022 года уже так:
https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-number.prototype.tolocalestring
3.14159265 22.12.2021 16:18 # 0
>Number.prototype.toLocaleString method as specified in the ECMA-402 specification.
А вот что говорит по этому поводу ECMA-402
3.14159265 22.12.2021 16:22 # +1
Поскольку в божественном 5.1 этого не было. А все что дальше эти все раздутые ECMA-402 это ересь и питушня.
Зато в 5.1 есть toPrecision.
https://262.ecma-international.org/5.1/#sec-15.7.4.7
Выходит гораздо чище и работает даже в IE6.
gEKA6PbCKuu_nemyx 22.12.2021 16:29 # 0
1024-- 22.12.2021 17:04 # +1
Стандарт крестов ECMAScript'а не мог становиться ещё толще и вытекал из треда ECMA-262.
3.14159265 21.12.2021 18:32 # +1
А если просто передать её аргументом?
+((0.1+0.2).toLocaleString('en-UK'))
1024-- 21.12.2021 18:35 # 0
Я не подумал про возможность педерачи аргумента, пошёл гуглить локалепитушню.
1024-- 21.12.2021 17:17 # +2
P.S. Поздравляю с сотым говнокодом!
gEKA6PbCKuu_nemyx 21.12.2021 17:40 # +1
Steve_Brown 21.12.2021 17:20 # 0
gEKA6PbCKuu_nemyx 21.12.2021 17:24 # +1
guest6 21.12.2021 17:26 # 0
и my ключ слово (в перле)
и go ключ слово сами знаете где
gEKA6PbCKuu_nemyx 21.12.2021 17:29 # 0
Steve_Brown 21.12.2021 17:45 # +1
(69)
Но там, как я помню, имена массивов и строк могли состоять Толька из одной буквы.
Rooster 21.12.2021 17:26 # 0
guest6 21.12.2021 17:25 # +2
Ты только сегодня узнал про IEEE 754?
Я тебе завидую.. ты только еще в самом начале интереснейшего пути в программирование... Тебя ждет не мало радости и удивления
ASD_77 21.12.2021 17:32 # 0
Rooster 21.12.2021 17:38 # +2
3.14159265 21.12.2021 18:09 # 0
bormand 21.12.2021 17:51 # +2
Ну или юзать decimal'ы вместо флоатов.
Floating_cockerel 21.12.2021 17:57 # +1
Авджрукк там не 0.1 и 0.2, Math.Pi + Math.sqrt(2)?
bormand 21.12.2021 18:04 # 0
guest6 21.12.2021 18:06 # +2
Есть проблема с представлением их в виде десятичных дробней
Ну так компьютер не виноват что тупые куски мяса не могут в нормальное представление.
Если завтра прилетят инопланетяни, которые все числа представляют как степени числа 42, то ваши десятичные числа тоже соснут
Steve_Brown 21.12.2021 18:07 # 0
Ну разве что тупо округлять до 6-7 значащих цифр.
Soul_re@ver 21.12.2021 18:10 # +1
Если у тебя все позиции идут с точностью до 3 значащих цифр, значит всё, что дальше — погрешности и их можно округлять.
А вообще в таких случаях цари не используют флоаты, а просто используют милионные? доли и для спокойствия питуха, просто ставят запятую в нужном месте.
gEKA6PbCKuu_nemyx 21.12.2021 18:12 # +1
bormand 21.12.2021 18:13 # +1
1024-- 21.12.2021 18:13 # 0
Ну и сравнивать в некоторых случаях, по-хорошему, надо расстояния в пикселях, если уж на то пошло, чтобы меньше застревали в текстурах.
guest6 21.12.2021 17:58 # 0
1024-- 21.12.2021 18:03 # +1
Э! До проблемы целых пока не дошли. Тут только проблемы нецелых обсуждаются.
Использовать нормальный язык программирования, где все числа целые (например, Brainfuck)
guest6 21.12.2021 18:03 # 0
графики рисовать?
Floating_cockerel 21.12.2021 18:05 # +1
Soul_re@ver 21.12.2021 18:06 # 0
1024-- 21.12.2021 18:07 # 0
Soul_re@ver 21.12.2021 18:11 # +1
Soul_re@ver 21.12.2021 18:03 # +4
https://reference.wolfram.com/language/guide/CLanguageInterface.html
3.14159265 21.12.2021 18:15 # 0
Rooster 21.12.2021 17:38 # 0
Floating_cockerel 21.12.2021 17:40 # +4
Простите меня!
guest6 21.12.2021 18:10 # +1
Floating_cockerel 21.12.2021 18:11 # +2
guest6 21.12.2021 18:13 # 0
Fike 21.12.2021 21:24 # +1