Расчет BigNumber.js показывает другое значение при выполнении того же расчета на C# с использованием десятичного типа даC#

Место общения программистов C#
Anonymous
Расчет BigNumber.js показывает другое значение при выполнении того же расчета на C# с использованием десятичного типа да

Сообщение Anonymous »

Я использую библиотеку BigNumber.js для высокоточных арифметических вычислений. Для обеспечения более высокой точности я использую метод toFixed объекта Bignumber следующим образом:

Код: Выделить всё

(new BigNumber(6000 )).minus(9006000).div(9006000).times(4503000 ).plus(4503000 ).toFixed()
Приведенный выше код дает результат как 2999.99999999999998275. Я попытался проверить результат этого вычисления на C#, используя тип данных decimal, поскольку decimal имеет более высокую точность, чем double, но результат был другим на детальном уровне.

Код: Выделить всё

decimal rg1 = 6000m;
decimal lastSavedRG1 = 9006000m;
decimal lastsavedrefinedgoalMonthly1 = 4503000m;
decimal cal1 = (lastsavedrefinedgoalMonthly1 + (lastsavedrefinedgoalMonthly1 * ((rg1 - lastSavedRG1) / lastSavedRG1)));
Это вычисление дает значения как 3000.0000000000000000000001. Есть идеи, почему такие различия?

Подробнее здесь: https://stackoverflow.com/questions/647 ... ion-in-c-s

Вернуться в «C#»