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