Merge pull request #109 from swsch/issue23
use RoundingMode enumeration and locale-safe BigDecimal.toPlainString
This commit is contained in:
@@ -24,6 +24,7 @@ import java.io.IOException;
|
|||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.DecimalFormatSymbols;
|
import java.text.DecimalFormatSymbols;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
@@ -93,20 +94,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider {
|
|||||||
* end I decided to calculate myself and take eur+sparator+cents
|
* end I decided to calculate myself and take eur+sparator+cents
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
value = value.setScale(scale, BigDecimal.ROUND_HALF_UP); // first, round so that e.g.
|
return value.setScale(scale, RoundingMode.HALF_UP).toPlainString();
|
||||||
// 1.189999999999999946709294817992486059665679931640625
|
|
||||||
// becomes 1.19
|
|
||||||
char[] repeat = new char[scale];
|
|
||||||
Arrays.fill(repeat, '0');
|
|
||||||
|
|
||||||
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols();
|
|
||||||
otherSymbols.setDecimalSeparator('.');
|
|
||||||
String baseFormat="0";
|
|
||||||
if (scale>0) {
|
|
||||||
baseFormat+=".";
|
|
||||||
}
|
|
||||||
DecimalFormat dec = new DecimalFormat(baseFormat + new String(repeat), otherSymbols);
|
|
||||||
return dec.format(value);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
package org.mustangproject.ZUGFeRD;
|
package org.mustangproject.ZUGFeRD;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.DecimalFormatSymbols;
|
import java.text.DecimalFormatSymbols;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
@@ -849,22 +850,22 @@ class ZUGFeRDTransactionModelConverter {
|
|||||||
|
|
||||||
|
|
||||||
private BigDecimal vatFormat(BigDecimal value) {
|
private BigDecimal vatFormat(BigDecimal value) {
|
||||||
return value.setScale(2, BigDecimal.ROUND_HALF_UP);
|
return value.setScale(2, RoundingMode.HALF_UP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private BigDecimal currencyFormat(BigDecimal value) {
|
private BigDecimal currencyFormat(BigDecimal value) {
|
||||||
return value.setScale(2, BigDecimal.ROUND_HALF_UP);
|
return value.setScale(2, RoundingMode.HALF_UP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private BigDecimal priceFormat(BigDecimal value) {
|
private BigDecimal priceFormat(BigDecimal value) {
|
||||||
return value.setScale(4, BigDecimal.ROUND_HALF_UP);
|
return value.setScale(4, RoundingMode.HALF_UP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private BigDecimal quantityFormat(BigDecimal value) {
|
private BigDecimal quantityFormat(BigDecimal value) {
|
||||||
return value.setScale(4, BigDecimal.ROUND_HALF_UP);
|
return value.setScale(4, RoundingMode.HALF_UP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user