Pro*_*ofK 0 c# algorithm floating-accuracy
我收到交易分配的FIX消息,其中价格以美分(ZAR/100)给出,但佣金以Rands给出.这些值由常量表示.当我运行此计算时,commPerc1显示值0.099999999999999978,并commPerc2显示0.1.这些值看起来由X10不同,但与计算返回的检查兰特,既commRands1和commRands2显示的分别为336.4831554和336.48315540000004非常相似的价值观.
private const double Price = 5708.91;
private const double Qty = 5894;
private const double AbsComm = 336.4831554;
static void Main()
{
double commCents = AbsComm * 100;
double commPerc1 = commCents / (Qty * Price) * 100;
double commRands1 = (Qty * Price) * (commPerc1 / 100) / 100;
double commPerc2 = (AbsComm / (Qty * (Price / 100))) * 100;
double commRands2 = (Qty * Price) * (commPerc2 / 100) / 100;
}
Run Code Online (Sandbox Code Playgroud)
请注意:
我正在处理遗留代码,其中转换为十进制将涉及多个更改和QA,所以现在我必须接受double.