为什么 SAP Business One SDK 使用 double for money?
Why SAP Business One SDK uses double for money?
我总是读到我应该使用 decimal
或类似的货币和财务计算 (example)。但是,据我所知,所有 Business One SDK 都使用 double
s?这个可以吗?我是否希望每次计算时都将 double 值转换为小数,而不是返回 double 如果我想为 API 对象设置它(我目前所做的)?
注意:SQL 数据库使用 numeric(19,6)
作为这些值。
尽管它在 Visual Studio 中看起来像什么,但 SAP SDK 并不是真正的 .Net 原生库 - 它是使用 COM Interop 对 C/C++ dll 进行的 .Net 包装.
我不认为 decimal
是 C/C++ 中的原生类型,它肯定不是 .Net 中的 basic/intrinsic 类型(不像 string
, int
, double
, 等等)——它的使用速度也较慢,因为没有用于 Decimal 运算的内在 CPU 指令(与基本类型不同)。
因为 C/C++ 中没有等效项,所以必须将其转换为底层库可以理解的类型 - 无论如何该类型都可能是 double
。
我总是读到我应该使用 decimal
或类似的货币和财务计算 (example)。但是,据我所知,所有 Business One SDK 都使用 double
s?这个可以吗?我是否希望每次计算时都将 double 值转换为小数,而不是返回 double 如果我想为 API 对象设置它(我目前所做的)?
注意:SQL 数据库使用 numeric(19,6)
作为这些值。
尽管它在 Visual Studio 中看起来像什么,但 SAP SDK 并不是真正的 .Net 原生库 - 它是使用 COM Interop 对 C/C++ dll 进行的 .Net 包装.
我不认为 decimal
是 C/C++ 中的原生类型,它肯定不是 .Net 中的 basic/intrinsic 类型(不像 string
, int
, double
, 等等)——它的使用速度也较慢,因为没有用于 Decimal 运算的内在 CPU 指令(与基本类型不同)。
因为 C/C++ 中没有等效项,所以必须将其转换为底层库可以理解的类型 - 无论如何该类型都可能是 double
。