Конвертирование длинных двойных в .NET - PullRequest
1 голос
/ 09 августа 2011

Я должен преобразовать некоторый код C (который работал на машине с Linux) в .Net, и обнаружил некоторые операции с long double.Они не являются специальными операциями, просто некоторые умножения и деления, заканчивающиеся большим количеством десятичных знаков, кажется, что тип использовался только из-за его размера.

Что бы вы сделали для преобразования кода?Я имею в виду просто умножить значения и разделить обратно в конце, чтобы посмотреть, поможет ли это, так как код в любом случае возвращает короткие значения в конце, плюс я не знаю, действительно ли исходный двоичный файл использовал весь размер в течение длительного времени.double может предоставить или если он просто использовал обычный 64-битный double под капотом.

Если вы не думаете, что это хорошая идея, знаете ли вы какой-либо класс или структуру, которые можно использовать дляобернуть и смоделировать длинный двойной?Создание оболочки в C / C ++ и вызов ее из .Net "невозможно".

Ответы [ 3 ]

2 голосов
/ 09 августа 2011

Скорее всего, C long double фактически сопоставлен с double, и поэтому, не зная больше о вычислениях, я бы предположил, что вы хорошо использовали double в C #.

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

Единственный способ быть на 100% уверенным в том, что двойного достаточно, - это изучить алгоритм, поэтому этот совет основан только на инстинкте и опыте.

0 голосов
/ 09 августа 2011

Вы может попробовать System.Decimal (он же decimal в C #) - это 96-битное число с арифметикой по основанию 10 (округление и т. Д.), Что делает его особенно подходит для сценариев, связанных с такими вещами, как валюта. Он не соответствует IEEE, но в зависимости от компилятора C , а также long double; p Обратите внимание, что он реализован в программном обеспечении.

0 голосов
/ 09 августа 2011

В .net у вас есть десятичная дробь, которая является реальным типом наивысшей точности, доступным на данный момент.Десятичная часть в основном используется для финансовых расчетов, поскольку она точна и имеет больший диапазон.Однако для научных расчетов это не рекомендуется, поскольку оно медленное по сравнению с двойным.

...