diff options
author | Laurent Balland-Poirier <laurent.balland-poirier@laposte.net> | 2017-03-03 21:51:26 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2017-04-12 17:16:56 +0200 |
commit | 4b3854147cd80962a8cf5e63d275b43ae7e0b21b (patch) | |
tree | 696cb6fea35aadd19ff0309825ba8d2fdbf5e4a5 /sc/qa/unit/ucalc.cxx | |
parent | 2aaf425550199f412773992c4623d1e5b83dea53 (diff) |
tdf#106252 Engineering notation for Precision as shown
with more tests
Reviewed-on: https://gerrit.libreoffice.org/35089
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Eike Rathke <erack@redhat.com>
(cherry picked from commit 5f2db66ad0de6fbbae309850516e17eaa17934cb)
Change-Id: Ifc77b847af4eaaa3c85e904e46c2663b6d768241
Reviewed-on: https://gerrit.libreoffice.org/36369
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins <ci@libreoffice.org>
(cherry picked from commit 3c68b6520e743e8ed9afa908a461f766952e030f)
Diffstat (limited to 'sc/qa/unit/ucalc.cxx')
-rw-r--r-- | sc/qa/unit/ucalc.cxx | 105 |
1 files changed, 79 insertions, 26 deletions
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index dbdd549b3ba6..ea44ff7d4f3d 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -6434,12 +6434,14 @@ void Test::testPrecisionAsShown() aCode = "0.00"; fValue = 1.0/3.0; fExpectedRoundVal = 0.33; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); - fValue = -10.001; - fExpectedRoundVal = -10.0; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 10.001; + fExpectedRoundVal = 10.0; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); } - { // thousand rounding buguous!!!! tdf#106253 + { // thousand rounding bogus!!!! tdf#106253 aCode = "0,,"; fValue = 4.0e9 / 7.0; fExpectedRoundVal = 571e6; // actual is 571428571 @@ -6452,54 +6454,105 @@ void Test::testPrecisionAsShown() aCode = "0.00%"; fValue = 4.0 / 7.0; fExpectedRoundVal = 0.5714; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); - fValue = -4.0 / 7.0; - fExpectedRoundVal = -0.5714; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 40.0 / 7.0; + fExpectedRoundVal = 5.7143; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); } { // scientific rounding aCode = "0.00E0"; fValue = 400000.0 / 7.0; fExpectedRoundVal = 57100.0; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); fValue = 4.0 / 70000.0; fExpectedRoundVal = 5.71e-5; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); - // engineering rounding bugous!!! tdf#106252 + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + // engineering rounding tdf#106252 aCode = "##0.000E0"; fValue = 400000.0 / 7.0; - fExpectedRoundVal = 57143.0; // actual is 57140 - //checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + fExpectedRoundVal = 57.143e3; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 4000000.0 / 7.0; + fExpectedRoundVal = 571.429e3; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 40000000.0 / 7.0; + fExpectedRoundVal = 5.714e6; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); fValue = 4.0 / 70000.0; - fExpectedRoundVal = 5.7143e-5; // actual is 5.714e-05 - //checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + fExpectedRoundVal = 57.143e-6; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 4.0 / 7000.0; + fExpectedRoundVal = 571.429e-6; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 4.0 / 700.0; + fExpectedRoundVal = 5.714e-3; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + aCode = "##?0.0#E0"; + fValue = 400000.0 / 7.0; + fExpectedRoundVal = 5.71e4; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 4000000.0 / 7.0; + fExpectedRoundVal = 57.14e4; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 40000000.0 / 7.0; + fExpectedRoundVal = 571.43e4; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 400000000.0 / 7.0; + fExpectedRoundVal = 5714.29e4; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 4.0 / 70000.0; + fExpectedRoundVal = 5714.29e-8; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 4.0 / 7000.0; + fExpectedRoundVal = 5.71e-4; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 4.0 / 700.0; + fExpectedRoundVal = 57.14e-4; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); + fValue = 4.0 / 70.0; + fExpectedRoundVal = 571.43e-4; + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); } { // fraction rounding tdf#105657 aCode = "# ?/?"; fValue = 0.35; fExpectedRoundVal = 1.0/3.0; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); - fValue = -0.35; - fExpectedRoundVal = -1.0/3.0; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); } { // exact fraction aCode = "# ?/??"; fValue = 0.35; fExpectedRoundVal = 0.35; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); - fValue = -0.35; - fExpectedRoundVal = -0.35; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal ); } { // several sub-formats tdf#106052 aCode = "0.00;-0.000"; fValue = 1.0/3.0; fExpectedRoundVal = 0.33; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); fValue = -1.0/3.0; fExpectedRoundVal = -0.333; - checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); + checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal ); } setCalcAsShown( m_pDoc, false); |