parent
f43fdb9b0d
commit
a89b55066f
@ -1,58 +0,0 @@
|
|||||||
From 68e0c8e4c834df57bc9a0e8da72151f69ff5e7a6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Tardon <dtardon@redhat.com>
|
|
||||||
Date: Fri, 12 Aug 2016 12:50:39 +0200
|
|
||||||
Subject: [PATCH] tdf#101077 make double->string conversion locale-agnostic
|
|
||||||
|
|
||||||
---
|
|
||||||
src/OdsGenerator.cxx | 19 +++++++++++++++++--
|
|
||||||
1 file changed, 17 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/OdsGenerator.cxx b/src/OdsGenerator.cxx
|
|
||||||
index 52e135e..8cb7203 100644
|
|
||||||
--- a/src/OdsGenerator.cxx
|
|
||||||
+++ b/src/OdsGenerator.cxx
|
|
||||||
@@ -26,6 +26,8 @@
|
|
||||||
|
|
||||||
#include <librevenge/librevenge.h>
|
|
||||||
|
|
||||||
+#include <iomanip>
|
|
||||||
+#include <locale>
|
|
||||||
#include <map>
|
|
||||||
#include <stack>
|
|
||||||
#include <sstream>
|
|
||||||
@@ -46,6 +48,19 @@
|
|
||||||
#include "OdcGenerator.hxx"
|
|
||||||
#include "OdfGenerator.hxx"
|
|
||||||
|
|
||||||
+namespace
|
|
||||||
+{
|
|
||||||
+
|
|
||||||
+librevenge::RVNGString makePreciseStr(const double value)
|
|
||||||
+{
|
|
||||||
+ std::ostringstream os;
|
|
||||||
+ os.imbue(std::locale::classic());
|
|
||||||
+ os << std::fixed << std::setprecision(8) << value;
|
|
||||||
+ return os.str().c_str();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
class OdsGeneratorPrivate : public OdfGenerator
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
@@ -968,10 +983,10 @@ void OdsGenerator::openSheetCell(const librevenge::RVNGPropertyList &propList)
|
|
||||||
// we need the maximum precision here, so we must avoid getStr() when possible
|
|
||||||
librevenge::RVNGString value;
|
|
||||||
if (propList["librevenge:value"]->getUnit()==librevenge::RVNG_GENERIC)
|
|
||||||
- value.sprintf("%.8f", propList["librevenge:value"]->getDouble());
|
|
||||||
+ value = makePreciseStr(propList["librevenge:value"]->getDouble());
|
|
||||||
else if (propList["librevenge:value"]->getUnit()==librevenge::RVNG_PERCENT)
|
|
||||||
{
|
|
||||||
- value.sprintf("%.8f", propList["librevenge:value"]->getDouble()*100.);
|
|
||||||
+ value = makePreciseStr(propList["librevenge:value"]->getDouble()*100.);
|
|
||||||
value.append('%');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
Loading…
Reference in new issue