diff options
author | Laurent Balland-Poirier <laurent.balland-poirier@laposte.net> | 2017-03-03 21:51:26 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2017-03-14 16:31:45 +0000 |
commit | 5f2db66ad0de6fbbae309850516e17eaa17934cb (patch) | |
tree | 5a699ffb72903c13068391a4fa39a92a12dc374d /sc/qa | |
parent | 578c8dea8ec7d377d738f8d821b741d0f3e8b9e4 (diff) |
tdf#106252 Engineering notation for Precision as shown
with more tests
Change-Id: Ifc77b847af4eaaa3c85e904e46c2663b6d768241
Reviewed-on: https://gerrit.libreoffice.org/35089
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'sc/qa')
-rw-r--r-- | sc/qa/unit/ucalc.cxx | 103 |
1 files changed, 78 insertions, 25 deletions
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 9a51d92f7a96..86aa87798477 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -6773,10 +6773,12 @@ 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 bogus!!!! tdf#106253 aCode = "0,,"; @@ -6791,54 +6793,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 bogus!!! 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); |