summaryrefslogtreecommitdiff
path: root/src/xmlpatterns/schema/qxsdtypechecker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmlpatterns/schema/qxsdtypechecker.cpp')
-rw-r--r--src/xmlpatterns/schema/qxsdtypechecker.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/xmlpatterns/schema/qxsdtypechecker.cpp b/src/xmlpatterns/schema/qxsdtypechecker.cpp
index 2e4ce8e..d6b224f 100644
--- a/src/xmlpatterns/schema/qxsdtypechecker.cpp
+++ b/src/xmlpatterns/schema/qxsdtypechecker.cpp
@@ -37,6 +37,8 @@
**
****************************************************************************/
+#include <QtMath>
+
#include "qxsdtypechecker_p.h"
#include "qabstractdatetime_p.h"
@@ -150,13 +152,12 @@ static int fractionDigitsForDecimal(const QString &lexicalValue)
{
// we use the lexical value here, as the conversion to double might strip
// away decimal positions
-
- QString trimmedValue(lexicalValue.trimmed());
- const int pos = trimmedValue.indexOf(QLatin1Char('.'));
- if (pos == -1) // no '.' -> 0 fraction digits
+ bool ok = false;
+ double dbl = lexicalValue.toDouble(&ok);
+ if (!ok)
return 0;
- else
- return (trimmedValue.length() - pos - 1);
+ dbl = dbl - qFloor(dbl);
+ return QString::number(dbl).length() - 2;
}
XsdTypeChecker::XsdTypeChecker(const XsdSchemaContext::Ptr &context, const QVector<QXmlName> &namespaceBindings, const QSourceLocation &location)