QML中最大的数字(浮点数/整数)是多少?

7
在 JavaScript 中,最高的整数是通过
Number.MAX_SAFE_INTEGER.

同时在C ++中可以使用std获得:

std::numeric_limits<int>::max()

QML 中是否有针对整数或浮点数的常量?

1
int是QML的基本类型。 - folibis
所以我们只能使用值2000000000吗?没有常量可用吗?谢谢。 - lackadaisical
你可以参考这个页面,但目前(绝对不正确但至少相关的)唯一选择是Number.MAX_VALUE - BaCaRoZzo
20亿听起来非常奇怪和不合逻辑。这个值不对应于任何特定的二进制表示。 - dtech
1
它们指的是通常的32位有符号整数范围,即-2^31=-2147483648到2^31-1=2147483647,大约为-2e9到2e9。 - Lutz Lehmann
然而,这并不是一个可以或应该近似的值。我个人希望他们在 QML 中实现了适当的整数支持。我有一个应用程序需要使用 64 位整数,但一直出现错误,直到我意识到在 JS 中整数只能到 2^53 左右。默认的 QML int 可以正常工作,因为它在这个范围内,但它自己的范围相当有限。 - dtech
3个回答

4
正如最初猜测的那样,文档中列出的2000000000数字是不正确的。此外,我认为这是一个重要的值,不应该受到如此粗心的近似。只有在实际值不确定或不关键时,才应该使用“大约”这个词。
一个简单的测试验证了QML中int属性的最大可能值为2147483647,或者如预期的2^31-1。
请注意,这与Number.MAX_SAFE_INTEGER不同,后者是JS的一个东西,其值为2^53-1,远高于int所能提供的值。Number是一个64位实数数据类型,它通过使用数字的53个小数位来支持整数,11个指数位未被使用。
编辑:在5.15版本和可能更早的版本中,可以使用无符号32位int的完整范围,将有效范围加倍超过qml的int类型,但必须使用var作为属性类型,甚至可能可以使用uint64,并且值在^53范围内。

1
您需要的常量是-InfinityInfinity,或者Number.NEGATIVE_INFINITYNumber.POSITIVE_INFINITY

1

另一个选择是使用IntValidator。默认情况下,top和bottom属性包含Qt int值的最大值和最小值。

readonly property IntValdiator intValdiator: IntValidator {}
readonly property int MAX_VALUE: intValidator.top
readonly property int MIN_VALUE: intValidator.bottom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接