2017-07-24 49 views

回答

1

documentation for real

注:在QML所有的實數都存儲在雙精度,IEEE浮點格式。

documentation on data type conversion

+----------------+----------------+ 
| Qt Type  | QML Basic Type | 
+----------------+----------------+ 
| [...]   | [...]   | 
| double  | double  | 
| [...]   | [...]   | 
| float, qreal | real   | 
+----------------+----------------+ 

因此,根據該文件不是一切都neccessarily鑄造到real,但一切都將具有相同的精度,所以我覺得你可以投或比較它們的你喜歡。

您可以創建一個JavaScript Library,在其中實現該功能,正如您的問題中所述。
或者你可以創建一個C++對象,並且你可以直接在C++中實現。然後你可以決定是否在每個文件中實例化這個對象,你需要它的地方,還是創建一個單例實例作爲庫。 AFAIK QML在靜態函數方面存在問題並需要該對象的一個​​實例。

我不知道QML中的任何預定義變量指定了epsilon。在C++中,對我來說是這樣的:

std::numeric_limits<double>::epsilon() -> 2.220446049250313e-16 

所以這個東西可能是一個不錯的選擇。

+0

所以,每當我比較,我想用小量做一個高精度的比較。你有什麼建議,我應該怎麼做'qml'文件?或者你認爲不需要在'qml'文件中複製下面的方法(問題中提到)? 'bool AreSame(double a,double b){return to fabs(a - b)

+1

好吧,我主要關注的是「*或者,它是在QML中被真正轉化爲真實的嗎?」 – derM

+0

:)這個問題的主要目標是如何複製這個: 'bool AreSame(double a,double b){return fabs(a - b)