- 1
- 2
- 3
let x = 0.1;
let y = 0.2;
let z = x + y
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
let x = 0.1;
let y = 0.2;
let z = x + y
чему равно?
ObeseYoung # 0
ASD__77 # 0 ⇈
Fike # 0
ASD__77 # 0 ⇈
Fike # 0 ⇈
Rooster # 0 ⇈
Rooster # 0
1024-- # 0 ⇈
Или вообще мелкие числа, у которых мантисса помещается в инт, он загоняет в инт, эмулируя фиксированного питуха в десятичной системе. Т.е. скажем, 1234.5 представляется как int (1234.5 * 10000).
ASD__77 # 0 ⇈
3.14159265 # 0 ⇈
Сначала линкер, теперь блять до intа докатились!
https://spin.atomicobject.com/2018/11/05/using-an-int-type-in-typescript/
guest # 0 ⇈
Fike # 0 ⇈
1024-- # 0 ⇈
* использовать дроби
* использовать символьные вычисления
* оставить как есть
3.14159265 # 0 ⇈
* использовать язык для белых
1024-- # 0 ⇈
3.14159265 # 0 ⇈
Язык называется typeScript.
Казалось бы причём здесь типы?
1024-- # 0 ⇈
Да, багор )))
Интересно, если поставить американскую локаль, а потом вызвать toLocaleString, а потом кастануть к Number, будет 0.3?
________
* А что, они уже все хромые? Девтулы выглядят так же с точностью до вида иконок и подсказывают результат так же
3.14159265 # 0 ⇈
Всегда так делаю.
> а потом вызвать toLocaleString, а потом кастануть к Number, будет 0.3?
Да
1024-- # 0 ⇈
1024-- # 0 ⇈
Шах и мат, PHP!
Заметим, что и по типам тут лучше. В [...] передаётся String - как и планировалось в ECMAScript.
3.14159265 # 0 ⇈
А такое в виндах работает?
1024-- # 0 ⇈
3.14159265 # 0 ⇈
>Шах и мат, PHP!
Говно какое-то трёхразрядное.
Upd: можно так
bormand # 0 ⇈
gEKA6PbCKuu_nemyx # 0 ⇈
3.14159265 # 0 ⇈
В версии 2022 года уже так:
https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-number.prototype.tolocalestring
3.14159265 # 0 ⇈
>Number.prototype.toLocaleString method as specified in the ECMA-402 specification.
А вот что говорит по этому поводу ECMA-402
3.14159265 # 0 ⇈
Поскольку в божественном 5.1 этого не было. А все что дальше эти все раздутые ECMA-402 это ересь и питушня.
Зато в 5.1 есть toPrecision.
https://262.ecma-international.org/5.1/#sec-15.7.4.7
Выходит гораздо чище и работает даже в IE6.
gEKA6PbCKuu_nemyx # 0 ⇈
1024-- # 0 ⇈
Стандарт крестов ECMAScript'а не мог становиться ещё толще и вытекал из треда ECMA-262.
3.14159265 # 0 ⇈
А если просто передать её аргументом?
+((0.1+0.2).toLocaleString('en-UK'))
1024-- # 0 ⇈
Я не подумал про возможность педерачи аргумента, пошёл гуглить локалепитушню.
1024-- # 0
P.S. Поздравляю с сотым говнокодом!
gEKA6PbCKuu_nemyx # 0 ⇈
Steve_Brown # 0
gEKA6PbCKuu_nemyx # 0 ⇈
guest # 0 ⇈
и my ключ слово (в перле)
и go ключ слово сами знаете где
gEKA6PbCKuu_nemyx # 0 ⇈
Steve_Brown # 0 ⇈
(69)
Но там, как я помню, имена массивов и строк могли состоять Толька из одной буквы.
Rooster # 0 ⇈
guest # 0
Ты только сегодня узнал про IEEE 754?
Я тебе завидую.. ты только еще в самом начале интереснейшего пути в программирование... Тебя ждет не мало радости и удивления
ASD__77 # 0 ⇈
Rooster # 0 ⇈
3.14159265 # 0 ⇈
bormand # 0 ⇈
Ну или юзать decimal'ы вместо флоатов.
Floating_cockerel # 0 ⇈
Авджрукк там не 0.1 и 0.2, Math.Pi + Math.sqrt(2)?
bormand # 0 ⇈
guest # 0 ⇈
Есть проблема с представлением их в виде десятичных дробней
Ну так компьютер не виноват что тупые куски мяса не могут в нормальное представление.
Если завтра прилетят инопланетяни, которые все числа представляют как степени числа 42, то ваши десятичные числа тоже соснут
Steve_Brown # 0 ⇈
Ну разве что тупо округлять до 6-7 значащих цифр.
[email protected] # 0 ⇈
Если у тебя все позиции идут с точностью до 3 значащих цифр, значит всё, что дальше — погрешности и их можно округлять.
А вообще в таких случаях цари не используют флоаты, а просто используют милионные? доли и для спокойствия питуха, просто ставят запятую в нужном месте.
gEKA6PbCKuu_nemyx # 0 ⇈
bormand # 0 ⇈
1024-- # 0 ⇈
Ну и сравнивать в некоторых случаях, по-хорошему, надо расстояния в пикселях, если уж на то пошло, чтобы меньше застревали в текстурах.
guest # 0 ⇈
1024-- # 0 ⇈
Э! До проблемы целых пока не дошли. Тут только проблемы нецелых обсуждаются.
Использовать нормальный язык программирования, где все числа целые (например, Brainfuck)
guest # 0 ⇈
графики рисовать?
Floating_cockerel # 0 ⇈
[email protected] # 0 ⇈
1024-- # 0 ⇈
[email protected] # 0 ⇈
[email protected] # 0 ⇈
https://reference.wolfram.com/language/guide/CLanguageInterface.html
3.14159265 # 0 ⇈
Rooster # 0
Floating_cockerel # 0
Простите меня!
guest # 0 ⇈
Floating_cockerel # 0 ⇈
guest # 0 ⇈
Fike # 0 ⇈