Skip to content

Commit 5f982d4

Browse files
authored
DFWPNum lost pressition when bigdecimals are used (#804)
Issue: 105261
1 parent e47d606 commit 5f982d4

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

common/src/main/java/com/genexus/CommonUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2983,7 +2983,7 @@ public static String strNoRound(double value, int length, int decimals)
29832983
}
29842984

29852985

2986-
static String str(BigDecimal value, int length, int decimals, boolean round) {
2986+
public static String str(BigDecimal value, int length, int decimals, boolean round) {
29872987
if (length - 1 <= decimals)
29882988
{
29892989
// Esto es que hizo str(_, 2, 1) o str(_, 3, 2), todas cosas

common/src/main/java/com/genexus/IDelimitedFilesSafe.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ public interface IDelimitedFilesSafe {
2727
byte dfwopen(final String filename, String fdel, final String sdel, final int append, final String enc);
2828

2929
byte dfwnext();
30-
byte dfwpnum(double num, int dec);
30+
byte dfwpnum(long num, int dec);
31+
byte dfwpnum(BigDecimal num, int dec);
32+
byte dfwpnum(double num, int dec);
3133
byte dfwptxt(String txt, int len);
3234
byte dfwpdate(Date date, String fmt, String sep);
3335
byte dfwclose();

common/src/main/java/com/genexus/util/DelimitedFilesSafe.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -756,12 +756,27 @@ public byte dfwpnum(int num)
756756
return 0;
757757
}
758758

759+
public byte dfwpnum(long num, int dec)
760+
{
761+
return dfwpnum(new BigDecimal(num), dec);
762+
}
763+
764+
public byte dfwpnum(BigDecimal num, int dec)
765+
{
766+
String doubnum = CommonUtil.ltrim(CommonUtil.str(num, 20 + dec, dec, true));
767+
return dfwpnum(doubnum, dec);
768+
}
759769
public byte dfwpnum(double num, int dec)
770+
{
771+
String doubnum = CommonUtil.ltrim(CommonUtil.str(num, 20 + dec, dec));
772+
return dfwpnum(doubnum, dec);
773+
}
774+
775+
private byte dfwpnum(String doubnum, int dec)
760776
{
761777
byte retval = GX_ASCDEL_SUCCESS;
762778
if (dfwopen_in_use)
763779
{
764-
String doubnum = CommonUtil.ltrim(CommonUtil.str(num, 20 + dec, dec));
765780
int k = doubnum.indexOf(".");
766781
if (dec == 0)
767782
{

0 commit comments

Comments
 (0)