$dec = user_price_dec();
if ($dec > 0)
{
- $divisor = pow(10, $dec);
- $frac = round2($amount - floor($amount), $dec) * $divisor;
- $frac = sprintf("%0{$dec}d", $frac);
+ $divisor = pow(10, $dec);
+ // algorithm rewritten due to a bug in sprintf (wrong with frac, 29, 57 and more).
+ $frac = round2($amount - floor($amount), $dec) * $divisor;
+ for ($div = $divisor / 10; $div > 1; $div /= 10)
+ {
+ if ($frac < $div)
+ $frac = "0" . $frac;
+ }
+ //$frac = sprintf("%0{$dec}d", $frac);
$and = _("and");
$frac = " $and $frac/$divisor";
}