あまりに酷くて

//何枚マイナスしたかを数える
int minus = 0;
//注文株数が正しくなるように調整する
while (orderQty > sumStockHold) {
	orderQty = orderQty + minus * stock.getUnit();
	minus--;
}
//注文株数はactionに基づいているので、株数を減らした分action値も減らす
double action = memo.getAction();
action += minus;

while文の中があまりに酷くてびっくり。これを書いたのは先週だっけか、よっぽど切羽詰ってたんだと思い込みたい。whileのなかではminusの大きさを増やすことによって、orderQtyとsumStockHoldを同じにしようとしているんだけど、処理の仕方がおかしいだろ。2000株だと挙動はおかしくならないから昨日のテストでは起こらなかったようだ。下が直したコードです。

//保有株と注文株数の差
int minus = orderQty - sumStockHold;
//注文量を保有株に合わせる。
orderQty = sumStockHold;
//注文株数はactionに基づいているので、株数を減らした分action値も減らす
double action = memo.getAction();
action += minus / stock.getUnit();
memo.setAction(action);

ふー、すっきり。