Почему в SAP Business One SDK используются двойные деньги?

Я всегда читал, что я должен использовать decimal или аналогичный для денег и финансовых расчетов (пример). Однако, насколько я вижу, все SDK Business One используют doubles? Это нормально? Ожидается ли, что я буду преобразовывать двойные значения в десятичные числа каждый раз, когда я выполняю вычисления, а не обратно в двойные, если я хочу установить его для объекта API (что я делаю в настоящее время)?

введите здесь описание изображения

Примечание. База данных SQL использует numeric(19,6) для этих значений.


person szab.kel    schedule 26.04.2019    source источник


Ответы (1)


Несмотря на то, как это может выглядеть в Visual Studio, SAP SDK на самом деле не является родной библиотекой .Net — это оболочка .Net над dll C/C++ с использованием COM Interop.

Я не думаю, что decimal является нативным типом в C/C++, и уж точно не является базовым/внутренним типом в .Net (в отличие, например, от string, int, double и т. д.) - его также медленнее использовать, потому что нет встроенного процессора. инструкции для десятичных операций (в отличие от основных типов).

Поскольку в C/C++ нет эквивалента, его нужно будет преобразовать в тип, который может быть понят базовой библиотекой, и этот тип в любом случае, вероятно, будет double.

person Zac Faragher    schedule 29.04.2019