Index: ssts-web/src/test/java/test/forgon/tools/util/ForgonNumberUtilsTest.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/tools/util/ForgonNumberUtilsTest.java (revision 0) +++ ssts-web/src/test/java/test/forgon/tools/util/ForgonNumberUtilsTest.java (revision 25163) @@ -0,0 +1,78 @@ +/** + * + */ +package test.forgon.tools.util; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +import org.testng.annotations.Test; + +import com.forgon.tools.util.ForgonNumberUtils; + +/** + * @author dandan 2018年12月17日 下午4:11:54 + * + */ +public class ForgonNumberUtilsTest { + + @Test + public void test_splitPrice() { + + double maxPrice = 1000.00; + int maxSplitAmount = 20; + int count = 0; + long st = System.currentTimeMillis(); + BigDecimal augend = new BigDecimal("0.01").setScale(2); + BigDecimal price = new BigDecimal("0.01").setScale(2); + while(true){ + if(price.doubleValue() > maxPrice){ + break; + } + String priceStr = price.toString(); + for(int amount = 2;amount<=maxSplitAmount;++amount){ + double[] prices = ForgonNumberUtils.splitPrice(price.doubleValue(), amount); + assertEquals(prices.length, 2); + + BigDecimal price0 = new BigDecimal(prices[0]); + BigDecimal total1 = new BigDecimal(prices[0]+prices[1]*(amount-1)).setScale(2, RoundingMode.HALF_UP); + BigDecimal total3 = price0; + double total2Double = prices[0]; + for(int i=0;i