Подтвердить что ты не робот

.NET Decimal, IEEE Decimal... любые обсуждения и т.д. Об этом и будущем?

Обратите внимание, что я не ищу что-то мнение или какую-то стороннюю библиотеку. Я просто хочу подтвердить, что ничего не запланировано (или указатели на какое-то обсуждение властями). Я попробовал google и не нашел ничего, поэтому похоже, что я направляюсь к "писать свою собственную реализацию в С++/CLI, используя библиотеку Intel" ).

Как и многие, я работаю с финансовыми цифрами, и это означает, что поплавки ужасно проблематичны. В то же время,.NET decimal - это зверь - медленный, но также большой (128 бит), что делает его неэффективным для использования, когда вы набираете сотни тысяч из них и хотите, чтобы они были в структуре с некоторой дополнительной информацией.

IEEE 754 определяет 3 десятичных типа, которые, скорее всего, будут поддерживаться в аппаратных средствах в основных процессах (у них уже есть меньше commmon, например, Power Series), для 32, 64 и 128 бит. Существует оптимизированная библиотека Intel для десятичной математики, и вполне вероятно, что в какой-то момент, по крайней мере, более простая математика будет в аппаратном обеспечении.

Все, что я мог найти, - это древняя дискуссия в Annotated С# Standard о взаимодействии между .NET decimal и IEEE, а затем предложенный стандарт и что она была отвергнута, но была сделана так, что можно определить, является ли битовое поле либо .NET. десятичный или бит-бит IEEE decimal 128.

С тех пор прошло много лет. Теперь IEEE 754: 2008 закончен и - интересно, есть ли что-нибудь официальное, что было опубликовано о том, как это должно продолжаться. Как я уже сказал, десятичная дробь .NET медленная и имеет нулевой шанс когда-либо получить аппаратное ускорение - и я не очень большой.

Итак, кто-нибудь знает что-нибудь в блоге или что-то в этом роде? Обратите внимание - это должно быть официальным или иметь в виду, я не здесь для мнений, которые относятся к людям, не связанным с .NET langauges или командами BCL. Это канонический ресурс, если в будущем будут рассмотрены дополнительные типы данных... возможно, для таймфрейма .NET 5.0/6.0.

4b9b3361

Ответ 1

Я запрограммировал финансовое программное обеспечение и полностью понял, почему простых целых чисел недостаточно.

Очень трудно доказать отрицание, но здесь идет:

http://social.msdn.microsoft.com/forums/vstudio/en-US/48c698db-d602-4f83-92bb-1c0506d58a78/ieee754 Короче, если язык не требует, чтобы .NET не заботился.

Поиск требуемого языка: Похоже, Dietmar Kühl собирался попытаться добавить десятичную цифру в c, но не смог отправить вовремя: десятичные типы данных С++

Несмотря на то, что IEEE по-прежнему много работает над десятичными знаками. Попробуйте выполнить поиск в Google:   

     Decimal site:ieee.org and limit it to the last month.
     Decimal Draft site:ieee.org and limit it to the last year.    

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

Так что пока я не вижу гораздо больше, чем вы. К сожалению.

О, и вы можете сказать supercat от меня, что (a + b) + c = a + (b + c) больше не гарантируется на целые числа, чем на плавающие точки. Биты также могут выпадать с левого конца целого числа без бесконечного размера. "a" может быть отрицательным и спасло вас от переполнения, если вы добавили его первым.

Ответ 2

Я не знаю о планах Microsoft (если есть).

Однако вы можете взглянуть на страницу Майка Колишова по десятичной арифметике в

Вы можете получить его спецификации для десятичной арифметики (основы десятичной плавающей запятой IEEE 754), а также реализацию ссылки на C-язык, тестовые примеры и т.д.:

Скомпилируйте это, p/Вызовите эти функции из десятичной структуры с плавающей запятой С#, которую вы пишете, и вам должно быть хорошо идти.

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