逗号后面有多少个地方需要获得正确的路由

时间:2017-03-07 13:00:07

标签: mysql math rounding

假设您想要对价格为60欧元的产品给予5欧元的折扣。

这等于折扣0.08333 ...或8.333 ...%

向后计算时,我会计算:

  • round(60 * 0.083333,2)= 5,00
  • round(60 * 0.08333,2)= 5,00
  • 圆形(60 * 0.0833,2)= 5,00
  • 圆形(60 * 0.083,2)= 4,98

问:在任何基本价格的任何折扣额下,获得准确数字(对于单一交易)需要多少个逗号后面的位置?

或者实际上,当在MySQL表中存储折扣时,我的十进制(x,y)类型参数应该是什么?

1 个答案:

答案 0 :(得分:0)

您需要累积误差小于1/2或0.005。中间结果的相对准确性需要反映出来。如果计算中包含的价格都低于10^k = 10^(k+2)分,则需要所有中间数字的相对准确度为0.5*10^(-k-2)或至少k+3个有效数字。

请注意,误差在计算的每个步骤中累加,按照第一顺序相加,因此当计算有多个步骤时,需要相应地调整计算的相对精度。 log10(s)s的有效位数。

在您的示例中,k=2的{​​{1}}步骤包含舍入结果,因此中间结果应至少具有2个有效数字,以确保获得正确的结果。