JS重い宣言的ユーザーインターフェース言語QMLの特有の側面の1つは、一見冗長な10進数の型を含んでいます。QMLで倍精度はRealと完全に等価ですか?
ネイティブタイプは、他の多くのプログラミング言語の名前に似た10進数の2つのbasic typesを宣言します。real
およびdouble
です。
現在のドキュメント(v5.8)のテーブルは、倍精度に格納されている小数点
番号、...として
double
を記述する。小数点今
と
...とreal
...
ため数奇数ビット。前の節では、ほとんどの言語と同様に、浮動小数点精度に基づいた実際に異なる型であると信じています(C/C++の
float
およびdouble
を参照してください)。しかし、その前提は正しくないと示されています。
real
statesのドキュメント:注:QMLで全ての実数は、倍精度に格納されている、IEEE浮動小数点形式 。
この基本タイプは、QML言語によって提供されます。 (おそらくあなたが取り組んでいるあなたのコードベースで標準だった方)、
オーケービット特有(なぜ2つのタイプを持っている)が、presumbablyそれが1つを選ぶために理にかなって、それが完全に正確であると仮定し、それと一緒に行く。
しかし、報道に予期しない問題があります、as noted by Kent Hansen on QtDeclarative:単精度浮動小数点数であることが記載されていました
タイプ「本物」が、間違ってい 。それはいつも二重です。
しかし、タイプ「real」の信号パラメータは、 プラットフォームに応じてfloatまたはdoubleのいずれかになることができるC++ タイプ「qreal」にマップされます。
JavaScriptの浮動小数点数は倍精度であるため、QML は、精度の潜在的な損失を避けるため、同じものを使用する必要があります。
Qtの文書に記載されている記述が完全に正確かどうかは疑問です。 Hansenの投稿は4年前のことで、
Qt
/QML
v5.1-2
の最新版でした。今私達はにいるので、彼が報告していることがまだ問題であるかどうか疑問に思います。
Qt
/QML
リリースバージョン(、2017年2月現在)にこの矛盾が存在するかどうかは、誰でも回答できますか?文書には同じであることが明白に示されているにもかかわらず、10進数の2つの別々の基本タイプが含まれているのはなぜですか?
に対して
double
を使用する他の理由はありますか?QML
にはその逆がありますか?
したがって、 'signal'の問題は 'C++'コードの 'float'にキャストされて解決されますか?著者が「Qt5」に問題があることを示したことに注意してください。適切なバグトラッカーへのリンクを追加して確認できますか?もしそうなら、私はこの答えを正しいものにすることができます。 –
Qtを '-float'フラグでコンパイルすると、まだフロートしていると思います。いくつかの組み込みプラットフォームでは、問題やバグではなく、速いパフォーマンスハックと思われます。 – Velkan
最後に確認/明確化していただきありがとうございます...私が作業しているコードベースのほとんどは「本物」を使用していますので、残念ながら「ダブル」インスタンスを移動することができます。心配!心の安堵をありがとう! –