Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 December 27

Д

Дмитрий in NodeUA - JavaScript and Node.js in Ukraine
разве округление в финансах не катастрофическая идея? разве не в bigdecimal надо их вычислять?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Дмитрий
разве округление в финансах не катастрофическая идея? разве не в bigdecimal надо их вычислять?
Округление это неотъемлимая часть. Вы же у себя на счету никогда не видели значений типа 72.7(3)
источник

Д

Дмитрий in NodeUA - JavaScript and Node.js in Ukraine
мне кажется это уже округление для клиента при представлении
источник

N

Nick in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
А вот хз, какой там может быть порядок в разных валютах. Боливары, может, и в триллионах исчисляются
Ну и потом нужна же точность при вычислении сложных процентов, а тут 0.2 + 0.1 - как эта проблема решается в финансовом js? В шарпе и жаве есть штатна возможность получить корректную сумму
0.1 + 0.2 это проблема стандарта IEEE 754, не относящаяся к какому-либо языку программирования
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Дмитрий
мне кажется это уже округление для клиента при представлении
Это легко проверить самому. Например взять и попереводить с грн в доллары. Если есть монобанк - прямо сейчас там отличный курс для проверки :)
источник

Д

Дмитрий in NodeUA - JavaScript and Node.js in Ukraine
XD
какой безпалевный продактплейсмент
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
никакого продакт плейсмента, просто живой пример
источник

Д

Дмитрий in NodeUA - JavaScript and Node.js in Ukraine
мне кажется надо призвать тов. архитектора что бы он рассудил и рассказал как в банках считаются деньги
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Nick
0.1 + 0.2 это проблема стандарта IEEE 754, не относящаяся к какому-либо языку программирования
Но в конкретных языках есть штатный(!) способ получить корректный результат сложения
А в js нет

Округление допустимо на последнем шаге. А если у нас цепочка действий (процент, потом конвертация, потом опять процент), округление на ранних шагах может привести к реальным убыткам
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Но в конкретных языках есть штатный(!) способ получить корректный результат сложения
А в js нет

Округление допустимо на последнем шаге. А если у нас цепочка действий (процент, потом конвертация, потом опять процент), округление на ранних шагах может привести к реальным убыткам
Какие штатные способы есть в языке, который вы знаете, который бы позволил бы без округления складывать бесконечные периодические дроби?
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Какие штатные способы есть в языке, который вы знаете, который бы позволил бы без округления складывать бесконечные периодические дроби?
0.30000000000000004.com
Вот там для жавы, Шарпа есть пример как получить 0.3
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
0.30000000000000004.com
Вот там для жавы, Шарпа есть пример как получить 0.3
Это не про бесконечне периодические дроби
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Это не про бесконечне периодические дроби
Тогда я не знаю способов (может они и есть)
Но вот эта проблема с арифметикой имеет решение в каких-то языках, а в js - нет
источник

AA

Anna Alimova 👩‍💻... in NodeUA - JavaScript and Node.js in Ukraine
Всё равно ведь всё упирается в сопроцессор для вычислений с плавающей запятой, хм. Но мне трепет стало интересно, как высокоуровневые языки это скармливают низкому уровню
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Я просто к чему веду. В математике есть много чего, связанного с бесконечностями. В том числе это касается бесконечных периодических дробей вроде той же 1/3. А в реальном мире все конечно. В данном случае ограничена память, ограничены размеры регистров проца и т.п.

Поэтому так или иначе округление происходит и не только на каких-то последних шагах, а всегда. И даже в тех же банках не будут считать тысячные доли. Их округляют, просто делают это так, что банк, как и казино, в проигрыше не остануться
источник

V

Vitaliy in NodeUA - JavaScript and Node.js in Ukraine
Хтось тут казав про білінг.
На одній з моїх галєр продавали білінг величезним телком операторам.
Він був написаний на pl/sql процедурах, з 1400+ табличками.
Спроектований вкінці 80-их.
Там елементарні операції по кілька секунд виконуються)
источник

AA

Anna Alimova 👩‍💻... in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Я просто к чему веду. В математике есть много чего, связанного с бесконечностями. В том числе это касается бесконечных периодических дробей вроде той же 1/3. А в реальном мире все конечно. В данном случае ограничена память, ограничены размеры регистров проца и т.п.

Поэтому так или иначе округление происходит и не только на каких-то последних шагах, а всегда. И даже в тех же банках не будут считать тысячные доли. Их округляют, просто делают это так, что банк, как и казино, в проигрыше не остануться
Это в принципе проблема цифровых машин )) одно время развивались аналоговые вычислительные машины, у них такое получалось точнее, потому что не надо было округлять
источник

AA

Anna Alimova 👩‍💻... in NodeUA - JavaScript and Node.js in Ukraine
Но цифровые победили по одной простой причине - в первую очередь мы считаем деньги, а не науку
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Anna Alimova 👩‍💻
Это в принципе проблема цифровых машин )) одно время развивались аналоговые вычислительные машины, у них такое получалось точнее, потому что не надо было округлять
Да, да, у нас на ВТ был курс, как мы его называли "Компьютерной археологии"
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Anna Alimova 👩‍💻
Всё равно ведь всё упирается в сопроцессор для вычислений с плавающей запятой, хм. Но мне трепет стало интересно, как высокоуровневые языки это скармливают низкому уровню
Вот тут чутка приоткрывают завесу тайны https://habr.com/ru/post/337260/
источник