[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master d838ad1f 06/11: Make number of decimals a duf
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master d838ad1f 06/11: Make number of decimals a duff_fmt() argument |
Date: |
Fri, 29 Apr 2022 11:59:33 -0400 (EDT) |
branch: master
commit d838ad1fe4ca3e9a976aa166fa4aff86875cc80f
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Make number of decimals a duff_fmt() argument
---
duff_fmt.hpp | 28 +++++--
duff_fmt_test.cpp | 246 ++++++++++++++++++++++++++++++++++++------------------
2 files changed, 183 insertions(+), 91 deletions(-)
diff --git a/duff_fmt.hpp b/duff_fmt.hpp
index 4e9c04b1..3606a9ee 100644
--- a/duff_fmt.hpp
+++ b/duff_fmt.hpp
@@ -38,13 +38,11 @@
/// Format a double using thousands separators. Reference:
/// https://groups.google.com/groups?selm=38C9B681.B8A036DF%40flash.net
-inline std::string duff_fmt(double value)
+inline std::string duff_fmt(double value, int decimals)
{
- constexpr int decimals {2}; // This will become an argument.
-
if(value < 0.0)
{
- return '-' + duff_fmt(-value);
+ return '-' + duff_fmt(-value, decimals);
}
constexpr int buffer_size {1000};
@@ -79,11 +77,23 @@ inline std::string duff_fmt(double value)
while(*p);
}
-// Obviously this won't do for 2 <> decimals:
-LMI_ASSERT('.' == *p);
- *q++ = *p++; // decimal point
- *q++ = *p++; // tenths
- *q++ = *p++; // hundredths
+ // The next character must be the decimal point.
+ LMI_ASSERT('.' == *p);
+ // If the next character after the decimal point is the
+ // terminating null, then zero decimals must be wanted,
+ // and the decimal point should be suppressed.
+ if('\0' == *(1 + p))
+ {
+ LMI_ASSERT(0 == decimals);
+ }
+ else
+ {
+ do
+ {
+ *q++ = *p++;
+ }
+ while(*p);
+ }
*q = '\0';
return out_buf;
diff --git a/duff_fmt_test.cpp b/duff_fmt_test.cpp
index b5dbcb31..07fe737b 100644
--- a/duff_fmt_test.cpp
+++ b/duff_fmt_test.cpp
@@ -33,90 +33,172 @@
int test_main(int, char*[])
{
- LMI_TEST_EQUAL( "1,234,567,890.14", duff_fmt( 1234567890.14159));
- LMI_TEST_EQUAL( "234,567,890.14", duff_fmt( 234567890.14159));
- LMI_TEST_EQUAL( "34,567,890.14", duff_fmt( 34567890.14159));
- LMI_TEST_EQUAL( "4,567,890.14", duff_fmt( 4567890.14159));
- LMI_TEST_EQUAL( "567,890.14", duff_fmt( 567890.14159));
- LMI_TEST_EQUAL( "67,890.14", duff_fmt( 67890.14159));
- LMI_TEST_EQUAL( "7,890.14", duff_fmt( 7890.14159));
- LMI_TEST_EQUAL( "890.14", duff_fmt( 890.14159));
- LMI_TEST_EQUAL( "90.14", duff_fmt( 90.14159));
- LMI_TEST_EQUAL( "0.14", duff_fmt( 0.14159));
- LMI_TEST_EQUAL( "1,234,567,890.00", duff_fmt( 1234567890.0 ));
- LMI_TEST_EQUAL( "234,567,890.00", duff_fmt( 234567890.0 ));
- LMI_TEST_EQUAL( "34,567,890.00", duff_fmt( 34567890.0 ));
- LMI_TEST_EQUAL( "4,567,890.00", duff_fmt( 4567890.0 ));
- LMI_TEST_EQUAL( "567,890.00", duff_fmt( 567890.0 ));
- LMI_TEST_EQUAL( "67,890.00", duff_fmt( 67890.0 ));
- LMI_TEST_EQUAL( "7,890.00", duff_fmt( 7890.0 ));
- LMI_TEST_EQUAL( "890.00", duff_fmt( 890.0 ));
- LMI_TEST_EQUAL( "90.00", duff_fmt( 90.0 ));
- LMI_TEST_EQUAL( "1.00", duff_fmt( 1.0 ));
- LMI_TEST_EQUAL( "1,000,000,000.00", duff_fmt( 1000000000.0 ));
- LMI_TEST_EQUAL( "100,000,000.00", duff_fmt( 100000000.0 ));
- LMI_TEST_EQUAL( "10,000,000.00", duff_fmt( 10000000.0 ));
- LMI_TEST_EQUAL( "1,000,000.00", duff_fmt( 1000000.0 ));
- LMI_TEST_EQUAL( "100,000.00", duff_fmt( 100000.0 ));
- LMI_TEST_EQUAL( "10,000.00", duff_fmt( 10000.0 ));
- LMI_TEST_EQUAL( "1,000.00", duff_fmt( 1000.0 ));
- LMI_TEST_EQUAL( "100.00", duff_fmt( 100.0 ));
- LMI_TEST_EQUAL( "10.00", duff_fmt( 10.0 ));
- LMI_TEST_EQUAL( "1.00", duff_fmt( 1.0 ));
- LMI_TEST_EQUAL( "0.10", duff_fmt( 0.1 ));
- LMI_TEST_EQUAL( "0.01", duff_fmt( 0.01 ));
- LMI_TEST_EQUAL( "2,147,483,647.00", duff_fmt( 2147483647.0 ));
- LMI_TEST_EQUAL( "2,000.00", duff_fmt( 1999.999 ));
- LMI_TEST_EQUAL( "2,000.00", duff_fmt( 1999.99501));
- LMI_TEST_EQUAL( "1,999.99", duff_fmt( 1999.99499));
- LMI_TEST_EQUAL( "1,900.00", duff_fmt( 1899.999 ));
- LMI_TEST_EQUAL( "10,000,000.00", duff_fmt( 9999999.999 ));
+ // Format positive numbers, with two decimals.
+ LMI_TEST_EQUAL( "1,234,567,890.14", duff_fmt( 1234567890.14159, 2));
+ LMI_TEST_EQUAL( "234,567,890.14", duff_fmt( 234567890.14159, 2));
+ LMI_TEST_EQUAL( "34,567,890.14", duff_fmt( 34567890.14159, 2));
+ LMI_TEST_EQUAL( "4,567,890.14", duff_fmt( 4567890.14159, 2));
+ LMI_TEST_EQUAL( "567,890.14", duff_fmt( 567890.14159, 2));
+ LMI_TEST_EQUAL( "67,890.14", duff_fmt( 67890.14159, 2));
+ LMI_TEST_EQUAL( "7,890.14", duff_fmt( 7890.14159, 2));
+ LMI_TEST_EQUAL( "890.14", duff_fmt( 890.14159, 2));
+ LMI_TEST_EQUAL( "90.14", duff_fmt( 90.14159, 2));
+ LMI_TEST_EQUAL( "0.14", duff_fmt( 0.14159, 2));
+ LMI_TEST_EQUAL( "1,234,567,890.00", duff_fmt( 1234567890.0 , 2));
+ LMI_TEST_EQUAL( "234,567,890.00", duff_fmt( 234567890.0 , 2));
+ LMI_TEST_EQUAL( "34,567,890.00", duff_fmt( 34567890.0 , 2));
+ LMI_TEST_EQUAL( "4,567,890.00", duff_fmt( 4567890.0 , 2));
+ LMI_TEST_EQUAL( "567,890.00", duff_fmt( 567890.0 , 2));
+ LMI_TEST_EQUAL( "67,890.00", duff_fmt( 67890.0 , 2));
+ LMI_TEST_EQUAL( "7,890.00", duff_fmt( 7890.0 , 2));
+ LMI_TEST_EQUAL( "890.00", duff_fmt( 890.0 , 2));
+ LMI_TEST_EQUAL( "90.00", duff_fmt( 90.0 , 2));
+ LMI_TEST_EQUAL( "1.00", duff_fmt( 1.0 , 2));
+ LMI_TEST_EQUAL( "1,000,000,000.00", duff_fmt( 1000000000.0 , 2));
+ LMI_TEST_EQUAL( "100,000,000.00", duff_fmt( 100000000.0 , 2));
+ LMI_TEST_EQUAL( "10,000,000.00", duff_fmt( 10000000.0 , 2));
+ LMI_TEST_EQUAL( "1,000,000.00", duff_fmt( 1000000.0 , 2));
+ LMI_TEST_EQUAL( "100,000.00", duff_fmt( 100000.0 , 2));
+ LMI_TEST_EQUAL( "10,000.00", duff_fmt( 10000.0 , 2));
+ LMI_TEST_EQUAL( "1,000.00", duff_fmt( 1000.0 , 2));
+ LMI_TEST_EQUAL( "100.00", duff_fmt( 100.0 , 2));
+ LMI_TEST_EQUAL( "10.00", duff_fmt( 10.0 , 2));
+ LMI_TEST_EQUAL( "1.00", duff_fmt( 1.0 , 2));
+ LMI_TEST_EQUAL( "0.10", duff_fmt( 0.1 , 2));
+ LMI_TEST_EQUAL( "0.01", duff_fmt( 0.01 , 2));
+ LMI_TEST_EQUAL( "2,147,483,647.00", duff_fmt( 2147483647.0 , 2));
+ LMI_TEST_EQUAL( "2,000.00", duff_fmt( 1999.999 , 2));
+ LMI_TEST_EQUAL( "2,000.00", duff_fmt( 1999.99501, 2));
+ LMI_TEST_EQUAL( "1,999.99", duff_fmt( 1999.99499, 2));
+ LMI_TEST_EQUAL( "1,900.00", duff_fmt( 1899.999 , 2));
+ LMI_TEST_EQUAL( "10,000,000.00", duff_fmt( 9999999.999 , 2));
// Repeat with negatives.
- LMI_TEST_EQUAL("-1,234,567,890.14", duff_fmt(-1234567890.14159));
- LMI_TEST_EQUAL( "-234,567,890.14", duff_fmt( -234567890.14159));
- LMI_TEST_EQUAL( "-34,567,890.14", duff_fmt( -34567890.14159));
- LMI_TEST_EQUAL( "-4,567,890.14", duff_fmt( -4567890.14159));
- LMI_TEST_EQUAL( "-567,890.14", duff_fmt( -567890.14159));
- LMI_TEST_EQUAL( "-67,890.14", duff_fmt( -67890.14159));
- LMI_TEST_EQUAL( "-7,890.14", duff_fmt( -7890.14159));
- LMI_TEST_EQUAL( "-890.14", duff_fmt( -890.14159));
- LMI_TEST_EQUAL( "-90.14", duff_fmt( -90.14159));
- LMI_TEST_EQUAL( "-0.14", duff_fmt( -0.14159));
- LMI_TEST_EQUAL("-1,234,567,890.00", duff_fmt(-1234567890.0 ));
- LMI_TEST_EQUAL( "-234,567,890.00", duff_fmt( -234567890.0 ));
- LMI_TEST_EQUAL( "-34,567,890.00", duff_fmt( -34567890.0 ));
- LMI_TEST_EQUAL( "-4,567,890.00", duff_fmt( -4567890.0 ));
- LMI_TEST_EQUAL( "-567,890.00", duff_fmt( -567890.0 ));
- LMI_TEST_EQUAL( "-67,890.00", duff_fmt( -67890.0 ));
- LMI_TEST_EQUAL( "-7,890.00", duff_fmt( -7890.0 ));
- LMI_TEST_EQUAL( "-890.00", duff_fmt( -890.0 ));
- LMI_TEST_EQUAL( "-90.00", duff_fmt( -90.0 ));
- LMI_TEST_EQUAL( "-1.00", duff_fmt( -1.0 ));
- LMI_TEST_EQUAL("-1,000,000,000.00", duff_fmt(-1000000000.0 ));
- LMI_TEST_EQUAL( "-100,000,000.00", duff_fmt( -100000000.0 ));
- LMI_TEST_EQUAL( "-10,000,000.00", duff_fmt( -10000000.0 ));
- LMI_TEST_EQUAL( "-1,000,000.00", duff_fmt( -1000000.0 ));
- LMI_TEST_EQUAL( "-100,000.00", duff_fmt( -100000.0 ));
- LMI_TEST_EQUAL( "-10,000.00", duff_fmt( -10000.0 ));
- LMI_TEST_EQUAL( "-1,000.00", duff_fmt( -1000.0 ));
- LMI_TEST_EQUAL( "-100.00", duff_fmt( -100.0 ));
- LMI_TEST_EQUAL( "-10.00", duff_fmt( -10.0 ));
- LMI_TEST_EQUAL( "-1.00", duff_fmt( -1.0 ));
- LMI_TEST_EQUAL( "-0.10", duff_fmt( -0.1 ));
- LMI_TEST_EQUAL( "-0.01", duff_fmt( -0.01 ));
- LMI_TEST_EQUAL("-2,147,483,647.00", duff_fmt(-2147483647.0 ));
- LMI_TEST_EQUAL( "-2,000.00", duff_fmt( -1999.999 ));
- LMI_TEST_EQUAL( "-2,000.00", duff_fmt( -1999.999 ));
- LMI_TEST_EQUAL( "-2,000.00", duff_fmt( -1999.99501));
- LMI_TEST_EQUAL( "-1,999.99", duff_fmt( -1999.99499));
- LMI_TEST_EQUAL( "-1,900.00", duff_fmt( -1899.999 ));
- LMI_TEST_EQUAL( "-10,000,000.00", duff_fmt( -9999999.999 ));
+ LMI_TEST_EQUAL("-1,234,567,890.14", duff_fmt(-1234567890.14159, 2));
+ LMI_TEST_EQUAL( "-234,567,890.14", duff_fmt( -234567890.14159, 2));
+ LMI_TEST_EQUAL( "-34,567,890.14", duff_fmt( -34567890.14159, 2));
+ LMI_TEST_EQUAL( "-4,567,890.14", duff_fmt( -4567890.14159, 2));
+ LMI_TEST_EQUAL( "-567,890.14", duff_fmt( -567890.14159, 2));
+ LMI_TEST_EQUAL( "-67,890.14", duff_fmt( -67890.14159, 2));
+ LMI_TEST_EQUAL( "-7,890.14", duff_fmt( -7890.14159, 2));
+ LMI_TEST_EQUAL( "-890.14", duff_fmt( -890.14159, 2));
+ LMI_TEST_EQUAL( "-90.14", duff_fmt( -90.14159, 2));
+ LMI_TEST_EQUAL( "-0.14", duff_fmt( -0.14159, 2));
+ LMI_TEST_EQUAL("-1,234,567,890.00", duff_fmt(-1234567890.0 , 2));
+ LMI_TEST_EQUAL( "-234,567,890.00", duff_fmt( -234567890.0 , 2));
+ LMI_TEST_EQUAL( "-34,567,890.00", duff_fmt( -34567890.0 , 2));
+ LMI_TEST_EQUAL( "-4,567,890.00", duff_fmt( -4567890.0 , 2));
+ LMI_TEST_EQUAL( "-567,890.00", duff_fmt( -567890.0 , 2));
+ LMI_TEST_EQUAL( "-67,890.00", duff_fmt( -67890.0 , 2));
+ LMI_TEST_EQUAL( "-7,890.00", duff_fmt( -7890.0 , 2));
+ LMI_TEST_EQUAL( "-890.00", duff_fmt( -890.0 , 2));
+ LMI_TEST_EQUAL( "-90.00", duff_fmt( -90.0 , 2));
+ LMI_TEST_EQUAL( "-1.00", duff_fmt( -1.0 , 2));
+ LMI_TEST_EQUAL("-1,000,000,000.00", duff_fmt(-1000000000.0 , 2));
+ LMI_TEST_EQUAL( "-100,000,000.00", duff_fmt( -100000000.0 , 2));
+ LMI_TEST_EQUAL( "-10,000,000.00", duff_fmt( -10000000.0 , 2));
+ LMI_TEST_EQUAL( "-1,000,000.00", duff_fmt( -1000000.0 , 2));
+ LMI_TEST_EQUAL( "-100,000.00", duff_fmt( -100000.0 , 2));
+ LMI_TEST_EQUAL( "-10,000.00", duff_fmt( -10000.0 , 2));
+ LMI_TEST_EQUAL( "-1,000.00", duff_fmt( -1000.0 , 2));
+ LMI_TEST_EQUAL( "-100.00", duff_fmt( -100.0 , 2));
+ LMI_TEST_EQUAL( "-10.00", duff_fmt( -10.0 , 2));
+ LMI_TEST_EQUAL( "-1.00", duff_fmt( -1.0 , 2));
+ LMI_TEST_EQUAL( "-0.10", duff_fmt( -0.1 , 2));
+ LMI_TEST_EQUAL( "-0.01", duff_fmt( -0.01 , 2));
+ LMI_TEST_EQUAL("-2,147,483,647.00", duff_fmt(-2147483647.0 , 2));
+ LMI_TEST_EQUAL( "-2,000.00", duff_fmt( -1999.999 , 2));
+ LMI_TEST_EQUAL( "-2,000.00", duff_fmt( -1999.999 , 2));
+ LMI_TEST_EQUAL( "-2,000.00", duff_fmt( -1999.99501, 2));
+ LMI_TEST_EQUAL( "-1,999.99", duff_fmt( -1999.99499, 2));
+ LMI_TEST_EQUAL( "-1,900.00", duff_fmt( -1899.999 , 2));
+ LMI_TEST_EQUAL( "-10,000,000.00", duff_fmt( -9999999.999 , 2));
+
+ // Same as above, with zero decimals.
+ LMI_TEST_EQUAL( "1,234,567,890", duff_fmt( 1234567890.14159, 0));
+ LMI_TEST_EQUAL( "234,567,890", duff_fmt( 234567890.14159, 0));
+ LMI_TEST_EQUAL( "34,567,890", duff_fmt( 34567890.14159, 0));
+ LMI_TEST_EQUAL( "4,567,890", duff_fmt( 4567890.14159, 0));
+ LMI_TEST_EQUAL( "567,890", duff_fmt( 567890.14159, 0));
+ LMI_TEST_EQUAL( "67,890", duff_fmt( 67890.14159, 0));
+ LMI_TEST_EQUAL( "7,890", duff_fmt( 7890.14159, 0));
+ LMI_TEST_EQUAL( "890", duff_fmt( 890.14159, 0));
+ LMI_TEST_EQUAL( "90", duff_fmt( 90.14159, 0));
+ LMI_TEST_EQUAL( "0", duff_fmt( 0.14159, 0));
+ LMI_TEST_EQUAL( "1,234,567,890", duff_fmt( 1234567890.0 , 0));
+ LMI_TEST_EQUAL( "234,567,890", duff_fmt( 234567890.0 , 0));
+ LMI_TEST_EQUAL( "34,567,890", duff_fmt( 34567890.0 , 0));
+ LMI_TEST_EQUAL( "4,567,890", duff_fmt( 4567890.0 , 0));
+ LMI_TEST_EQUAL( "567,890", duff_fmt( 567890.0 , 0));
+ LMI_TEST_EQUAL( "67,890", duff_fmt( 67890.0 , 0));
+ LMI_TEST_EQUAL( "7,890", duff_fmt( 7890.0 , 0));
+ LMI_TEST_EQUAL( "890", duff_fmt( 890.0 , 0));
+ LMI_TEST_EQUAL( "90", duff_fmt( 90.0 , 0));
+ LMI_TEST_EQUAL( "1", duff_fmt( 1.0 , 0));
+ LMI_TEST_EQUAL( "1,000,000,000", duff_fmt( 1000000000.0 , 0));
+ LMI_TEST_EQUAL( "100,000,000", duff_fmt( 100000000.0 , 0));
+ LMI_TEST_EQUAL( "10,000,000", duff_fmt( 10000000.0 , 0));
+ LMI_TEST_EQUAL( "1,000,000", duff_fmt( 1000000.0 , 0));
+ LMI_TEST_EQUAL( "100,000", duff_fmt( 100000.0 , 0));
+ LMI_TEST_EQUAL( "10,000", duff_fmt( 10000.0 , 0));
+ LMI_TEST_EQUAL( "1,000", duff_fmt( 1000.0 , 0));
+ LMI_TEST_EQUAL( "100", duff_fmt( 100.0 , 0));
+ LMI_TEST_EQUAL( "10", duff_fmt( 10.0 , 0));
+ LMI_TEST_EQUAL( "1", duff_fmt( 1.0 , 0));
+ LMI_TEST_EQUAL( "0", duff_fmt( 0.1 , 0));
+ LMI_TEST_EQUAL( "0", duff_fmt( 0.01 , 0));
+ LMI_TEST_EQUAL( "2,147,483,647", duff_fmt( 2147483647.0 , 0));
+ LMI_TEST_EQUAL( "2,000", duff_fmt( 1999.999 , 0));
+ LMI_TEST_EQUAL( "2,000", duff_fmt( 1999.99501, 0));
+ LMI_TEST_EQUAL( "2,000", duff_fmt( 1999.99499, 0));
+ LMI_TEST_EQUAL( "1,900", duff_fmt( 1899.999 , 0));
+ LMI_TEST_EQUAL( "10,000,000", duff_fmt( 9999999.999 , 0));
+
+ // Repeat with negatives.
+ LMI_TEST_EQUAL("-1,234,567,890", duff_fmt(-1234567890.14159, 0));
+ LMI_TEST_EQUAL( "-234,567,890", duff_fmt( -234567890.14159, 0));
+ LMI_TEST_EQUAL( "-34,567,890", duff_fmt( -34567890.14159, 0));
+ LMI_TEST_EQUAL( "-4,567,890", duff_fmt( -4567890.14159, 0));
+ LMI_TEST_EQUAL( "-567,890", duff_fmt( -567890.14159, 0));
+ LMI_TEST_EQUAL( "-67,890", duff_fmt( -67890.14159, 0));
+ LMI_TEST_EQUAL( "-7,890", duff_fmt( -7890.14159, 0));
+ LMI_TEST_EQUAL( "-890", duff_fmt( -890.14159, 0));
+ LMI_TEST_EQUAL( "-90", duff_fmt( -90.14159, 0));
+ LMI_TEST_EQUAL( "-0", duff_fmt( -0.14159, 0));
+ LMI_TEST_EQUAL("-1,234,567,890", duff_fmt(-1234567890.0 , 0));
+ LMI_TEST_EQUAL( "-234,567,890", duff_fmt( -234567890.0 , 0));
+ LMI_TEST_EQUAL( "-34,567,890", duff_fmt( -34567890.0 , 0));
+ LMI_TEST_EQUAL( "-4,567,890", duff_fmt( -4567890.0 , 0));
+ LMI_TEST_EQUAL( "-567,890", duff_fmt( -567890.0 , 0));
+ LMI_TEST_EQUAL( "-67,890", duff_fmt( -67890.0 , 0));
+ LMI_TEST_EQUAL( "-7,890", duff_fmt( -7890.0 , 0));
+ LMI_TEST_EQUAL( "-890", duff_fmt( -890.0 , 0));
+ LMI_TEST_EQUAL( "-90", duff_fmt( -90.0 , 0));
+ LMI_TEST_EQUAL( "-1", duff_fmt( -1.0 , 0));
+ LMI_TEST_EQUAL("-1,000,000,000", duff_fmt(-1000000000.0 , 0));
+ LMI_TEST_EQUAL( "-100,000,000", duff_fmt( -100000000.0 , 0));
+ LMI_TEST_EQUAL( "-10,000,000", duff_fmt( -10000000.0 , 0));
+ LMI_TEST_EQUAL( "-1,000,000", duff_fmt( -1000000.0 , 0));
+ LMI_TEST_EQUAL( "-100,000", duff_fmt( -100000.0 , 0));
+ LMI_TEST_EQUAL( "-10,000", duff_fmt( -10000.0 , 0));
+ LMI_TEST_EQUAL( "-1,000", duff_fmt( -1000.0 , 0));
+ LMI_TEST_EQUAL( "-100", duff_fmt( -100.0 , 0));
+ LMI_TEST_EQUAL( "-10", duff_fmt( -10.0 , 0));
+ LMI_TEST_EQUAL( "-1", duff_fmt( -1.0 , 0));
+ LMI_TEST_EQUAL( "-0", duff_fmt( -0.1 , 0));
+ LMI_TEST_EQUAL( "-0", duff_fmt( -0.01 , 0));
+ LMI_TEST_EQUAL("-2,147,483,647", duff_fmt(-2147483647.0 , 0));
+ LMI_TEST_EQUAL( "-2,000", duff_fmt( -1999.999 , 0));
+ LMI_TEST_EQUAL( "-2,000", duff_fmt( -1999.999 , 0));
+ LMI_TEST_EQUAL( "-2,000", duff_fmt( -1999.99501, 0));
+ LMI_TEST_EQUAL( "-2,000", duff_fmt( -1999.99499, 0));
+ LMI_TEST_EQUAL( "-1,900", duff_fmt( -1899.999 , 0));
+ LMI_TEST_EQUAL( "-10,000,000", duff_fmt( -9999999.999 , 0));
// Implementation-defined value [2.13.3/1].
LMI_TEST
- ( "1,999.99" == duff_fmt( 1999.995 )
- || "2,000.00" == duff_fmt( 1999.995 )
+ ( "1,999.99" == duff_fmt( 1999.995 , 2)
+ || "2,000.00" == duff_fmt( 1999.995 , 2)
);
// Infinities and NaNs. Apparently the C89/90 standard referenced
@@ -134,12 +216,12 @@ int test_main(int, char*[])
#endif // defined __BORLANDC__
double volatile d = 0.0;
- duff_fmt( 1.0 / d );
- duff_fmt(-1.0 / d );
+ duff_fmt( 1.0 / d, 2);
+ duff_fmt(-1.0 / d, 2);
if(std::numeric_limits<double>::has_quiet_NaN)
{
- duff_fmt(std::numeric_limits<double>::quiet_NaN());
+ duff_fmt(std::numeric_limits<double>::quiet_NaN(), 2);
}
return 0;
- [lmi-commits] [lmi] master updated (a2c3a37c -> 92d90368), Greg Chicares, 2022/04/29
- [lmi-commits] [lmi] master 17f6042e 01/11: Test nonstandard "'" printf flag, Greg Chicares, 2022/04/29
- [lmi-commits] [lmi] master 5e493f40 02/11: Rename ncnnnpnn, Greg Chicares, 2022/04/29
- [lmi-commits] [lmi] master a87f01b0 03/11: Rename a function, Greg Chicares, 2022/04/29
- [lmi-commits] [lmi] master 51c6865b 04/11: Use non-long double for duff_fmt(), Greg Chicares, 2022/04/29
- [lmi-commits] [lmi] master e8d7f191 05/11: Use low-level functions for low-level work, Greg Chicares, 2022/04/29
- [lmi-commits] [lmi] master 2202d220 09/11: Reimplement ledger_format() in terms of duff_fmt(), Greg Chicares, 2022/04/29
- [lmi-commits] [lmi] master d46e3440 07/11: Modernize duff_fmt(), Greg Chicares, 2022/04/29
- [lmi-commits] [lmi] master d838ad1f 06/11: Make number of decimals a duff_fmt() argument,
Greg Chicares <=
- [lmi-commits] [lmi] master e8d4b982 08/11: Measure ledger_format() speed, Greg Chicares, 2022/04/29
- [lmi-commits] [lmi] master 92d90368 11/11: Designate release candidate 20220429T1437Z, Greg Chicares, 2022/04/29
- [lmi-commits] [lmi] master 542c0473 10/11: Augment unit test, Greg Chicares, 2022/04/29