价格除以3

Boy*_*yen 6 c# math numbers

对于会计程序,我需要将价格除以3,以便在3个月内共享

例如9€

  • 第一个月3欧元
  • 第二个月3欧元
  • 第三个月3欧元

现在这将是价格/ 3

但如果这个数字是10呢?

  • 第一个月3,33€
  • 第二个月3,33€
  • 上个月3,33欧元

3,33€*3 =€9.99

一分钱已经失踪.我怎样才能使它的产量变为3,33€,3,33€,3,34€?

Bat*_*eba 15

你需要向会计师询问他们在这里想要什么.这在软件开发中是一件很重要的事情:询问用户.

通常,为了稳定,您将从余额账户中减去支付的金额,并将支票放入以确保余额降至零.

不要永远建立会计软件时使用浮点数据类型.浮点精度会咬你.请改用货币类型.

  • 这个答案不能得到足够的支持.会计师有办法解决这些问题,你必须考虑到这一点.他们不会喜欢任何其他解决方案(他们也知道相关法律). (4认同)

Tim*_* S. 11

你可以通过弥补差异来设置最后一个,而不是通过与其余的相同的计算.在伪代码中:

normalMonthPrice = RoundToTwoPlaces(totalPrice / months);
lastMonthPrice = totalPrice - (normalMonthPrice * (months - 1));
Run Code Online (Sandbox Code Playgroud)


Mic*_*ter 5

正如Bathsheba所说,首先询问您的用户.

这是我在这种情况下经常使用的技术.这种方法将确保最均匀的分布,向上偏向末端.例如,如果你打电话DivvyUp(101, 3),你会得到33.66, 33.67, 33.67.请注意,差异不仅仅是在最后弥补.相反,每个值都是根据剩下的内容计算的,而不是根据什么开始计算的.

public static double[] DivvyUp(double total, uint count)
{
    var parts = new double[count];
    for (var i = 0; i < count; ++i)
    {
        var part = Math.Truncate((100d * total) / (count - i)) / 100d;
        parts[i] = part;
        total -= part;
    }
    return parts;
}
Run Code Online (Sandbox Code Playgroud)