mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-16 18:25:11 -06:00
Bug 799268 - Cannot write a check over $1000
this is caused by d52d226e5b
which caused log_val, pow_val, this_part
to be kept as float instead of the original algorithm which required
casting to int.
This commit is contained in:
parent
0447e8da3a
commit
8c94132f13
@ -1561,19 +1561,18 @@ integer_to_words(gint64 val)
|
||||
|
||||
while (val >= 1000)
|
||||
{
|
||||
auto log_val = log10(val) / 3 + FUDGE;
|
||||
auto pow_val = exp(log_val * 3 * G_LN10) + FUDGE;
|
||||
auto this_part = val / pow_val;
|
||||
int log_val = log10(val) / 3 + FUDGE;
|
||||
int pow_val = exp(log_val * 3 * G_LN10) + FUDGE;
|
||||
int this_part = val / pow_val;
|
||||
val -= this_part * pow_val;
|
||||
auto tmp = integer_to_words(this_part);
|
||||
g_string_append_printf(result, "%s %s ", tmp,
|
||||
gettext(big_numbers[static_cast<int>(log_val)]));
|
||||
g_string_append_printf(result, "%s %s ", tmp, gettext(big_numbers[log_val]));
|
||||
g_free(tmp);
|
||||
}
|
||||
|
||||
if (val >= 100)
|
||||
{
|
||||
auto this_part = val / 100;
|
||||
int this_part = val / 100;
|
||||
val -= this_part * 100;
|
||||
g_string_append_printf(result, "%s %s ",
|
||||
gettext(small_numbers[this_part]),
|
||||
@ -1582,7 +1581,7 @@ integer_to_words(gint64 val)
|
||||
|
||||
if (val > 20)
|
||||
{
|
||||
auto this_part = val / 10;
|
||||
int this_part = val / 10;
|
||||
val -= this_part * 10;
|
||||
g_string_append(result, gettext(medium_numbers[this_part]));
|
||||
g_string_append_c(result, ' ');
|
||||
@ -1590,7 +1589,7 @@ integer_to_words(gint64 val)
|
||||
|
||||
if (val > 0)
|
||||
{
|
||||
auto this_part = val;
|
||||
int this_part = val;
|
||||
g_string_append(result, gettext(small_numbers[this_part]));
|
||||
g_string_append_c(result, ' ');
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user