diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2015-01-28 09:34:10 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@theqtcompany.com> | 2015-03-03 10:04:31 +0000 |
commit | c3effc6cd3a66b6c02048d8ad85c7ed3bb3c1463 (patch) | |
tree | 0f3a90e0350de5243e0fb43ec0d7994cc18cc77a /src/qml/jsruntime/qv4numberobject.cpp | |
parent | 29bb4495e6b827bd8dd443ce07cb7ccda14645c1 (diff) |
V4: fix ToFixed rounding for 0 fraction digits.
(12.5).toFixed() should return 13, not 12.
Task-number: QTBUG-43885
Task-number: QTBUG-44039
Change-Id: Id2b19641e8c12dd5755d8447508b74567e4a2b9b
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/qml/jsruntime/qv4numberobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4numberobject.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4numberobject.cpp b/src/qml/jsruntime/qv4numberobject.cpp index 227ff14104..236091ba68 100644 --- a/src/qml/jsruntime/qv4numberobject.cpp +++ b/src/qml/jsruntime/qv4numberobject.cpp @@ -202,9 +202,15 @@ ReturnedValue NumberPrototype::method_toFixed(CallContext *ctx) str = QString::fromLatin1("NaN"); else if (qIsInf(v)) str = QString::fromLatin1(v < 0 ? "-Infinity" : "Infinity"); - else if (v < 1.e21) - str = QString::number(v, 'f', int (fdigits)); - else + else if (v < 1.e21) { + char buf[100]; + double_conversion::StringBuilder builder(buf, sizeof(buf)); + double_conversion::DoubleToStringConverter::EcmaScriptConverter().ToFixed(v, fdigits, &builder); + str = QString::fromLatin1(builder.Finalize()); + // At some point, the 3rd party double-conversion code should be moved to qtcore. + // When that's done, we can use: +// str = QString::number(v, 'f', int (fdigits)); + } else return RuntimeHelpers::stringFromNumber(ctx, v)->asReturnedValue(); return ctx->d()->engine->newString(str)->asReturnedValue(); } |