You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2002/06/20 03:13:48 UTC
cvs commit: xml-xalan/c/src/PlatformSupport DOMStringHelper.cpp
dbertoni 2002/06/19 18:13:48
Modified: c/src/PlatformSupport DOMStringHelper.cpp
Log:
Better support for double-to-string conversions.
Revision Changes Path
1.71 +42 -2 xml-xalan/c/src/PlatformSupport/DOMStringHelper.cpp
Index: DOMStringHelper.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/DOMStringHelper.cpp,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -r1.70 -r1.71
--- DOMStringHelper.cpp 6 May 2002 05:16:56 -0000 1.70
+++ DOMStringHelper.cpp 20 Jun 2002 01:13:48 -0000 1.71
@@ -1400,6 +1400,35 @@
+static const char* const thePrintfStrings[] =
+{
+ "%.15f",
+ "%.16f",
+ "%.17f",
+ "%.18f",
+ "%.19f",
+ "%.20f",
+ "%.21f",
+ "%.22f",
+ "%.23f",
+ "%.24f",
+ "%.25f",
+ "%.26f",
+ "%.27f",
+ "%.28f",
+ "%.29f",
+ "%.30f",
+ "%.31f",
+ "%.32f",
+ "%.33f",
+ "%.34f",
+ "%.35f",
+ 0
+};
+
+
+
+
XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString)&
PointerToDOMString(
const void* theValue,
@@ -1461,10 +1490,21 @@
#if defined(XALAN_STRICT_ANSI_HEADERS)
using std::sprintf;
+ using std::atof;
#endif
- unsigned int theCharsWritten = sprintf(theBuffer, "%f", theDouble);
- assert(theCharsWritten != 0);
+ const char* const * thePrintfString = thePrintfStrings;
+
+ unsigned int theCharsWritten = 0;
+
+ do
+ {
+ theCharsWritten = sprintf(theBuffer, *thePrintfString, theDouble);
+ assert(theCharsWritten != 0);
+
+ ++thePrintfString;
+ }
+ while(atof(theBuffer) != theDouble && *thePrintfString != 0);
// First, cleanup the output to conform to the XPath standard,
// which says no trailing '0's for the decimal portion.
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org