diff --git a/src/js/ripple/amount.js b/src/js/ripple/amount.js index 2a3f56e7..40eb0e16 100644 --- a/src/js/ripple/amount.js +++ b/src/js/ripple/amount.js @@ -842,7 +842,7 @@ Amount.prototype.to_human = function(opts) { } var isNegative = ref._value.isNegative(); - var valueString = ref._value.abs().toString(); + var valueString = ref._value.abs().toFixed(); var parts = valueString.split('.'); var int_part = parts[0]; var fraction_part = parts.length === 2 ? parts[1] : ''; diff --git a/test/amount-test.js b/test/amount-test.js index 9fd277df..ad5085b3 100644 --- a/test/amount-test.js +++ b/test/amount-test.js @@ -118,6 +118,12 @@ describe('Amount', function() { it('to human rounding edge case, precision 3, 2', function() { assert.strictEqual(Amount.from_human("0.999 XAU").to_human({precision:2}), '1.00'); }); + it('to human very small number', function() { + assert.strictEqual(Amount.from_json('12e-20/USD').to_human(), '0.00000000000000000012'); + }); + it('to human very small number with precision', function() { + assert.strictEqual(Amount.from_json('12e-20/USD').to_human({precision: 20}), '0.00000000000000000012'); + }); }); describe('from_human', function() { it('empty string', function() {