在计算拍卖中的下一个最低出价时,尝试舍入到最接近的$ 5,$ 10,$ 50和$ 100

时间:2014-03-26 20:44:42

标签: java algorithm methods

我正在开发一个大型程序,该程序利用一系列较小的方法来创建功能正常的拍卖系统。我在使用这种特殊方法时遇到问题,我必须提高当前或现在最高出价的项目的最低出价#34;

说明如下:

如果出价被接受,那么您需要将该项目的minBid提高5%,高于当前出价,向上舍入到最接近的$ 5,低于$ 100.00, 在$ 100.01和$ 100.01之间向上舍入到最接近的$ 10 $ 1000.00,四舍五入到最接近的$ 50.00之间 $ 1000.01和$ 10000.00,并向上舍入到 最近的$ 100以上$ 10000.00

我的主要问题是确切地说我可以只用5或10来进行整理,具体取决于出价金额。到目前为止,这是我的代码,非常感谢任何帮助:)

public class computeMinNextBid
{
    public static double computeMinNextBid(double currentBid)
    {
        double minNextBid = (currentBid * 0.05) + currentBid;
        if(minNextBid <= 100.00)
        {
            minNextBid = Math.round(minNextBid);
        }

        else if(minNextBid >= 100.01 && minNextBid <= 1000.00)
        {
            minNextBid = Math.round(minNextBid); 
        }

        else if(minNext Bid >=1000.01 && <= 10000.00)
        {
            minNextBid = Math.round(minNextBid);
        }

        else(minNextBid >= 10000.01)
        {
            minNextBid = Math.round(minNextBid); 
        }
        return minNextBid; 
    }

    public static void main(String [] args)
    {
        double currentBid = Double.parseDouble(args[0]); 
        double minNextBid = computeMinNextBid(currentBid); 
        System.out.println("The next minimum bid is: " + minNextBid); 
    }
}

1 个答案:

答案 0 :(得分:2)

舍入到 N 的一般表达式(使用整数运算)是:

x = (x + N/2)/N * N;

舍入到 N 的最近倍数。例如,对于 x = 45且 N = 100,这将产生0(即,它将45向下舍入为0)。对于 x = 55,这会产生100(即,它将55到55)。

要围绕向下(也称为截断),请删除&#34; + N/2&#34;部分:

x = x/N * N;

要将向上舍入到最近的 N ,请使用:

x = (x + N-1)/N * N;

例如,对于 x = 35且 N = 100,这会产生100(即,它会在0到99之间舍入任何 x 最多100)。