2012-08-02 40 views
3

設置UISlider變化精度的最小/最大假設我有代表值的連續範圍內的UISlider從-1到2。如果我離開的預設最低= 0,最大值= 1,則我的0值是由滑塊表示爲行程的1/3,浮點值爲1/3(0.33333333)。我特別感興趣的是0的特殊值,並將其表示爲0.333333,它必須(稍微)圓整,感覺不對。如果我要將最小值更改爲-1,將最大值更改爲2,那麼我的0值完全是浮點值0.0。是否通過舍入

會設置最小/最大給我更多的準確性?拇指是否在像素邊界上移動 - 也許我可以使用該信息來嘗試一些舍入示例?

+0

我很困惑你在問什麼。你不能只設置'slider.minimumValue = -1.0;'和'slider.maximumValue = 2.0;'?然後設置'slider.value = 0;'? slider.value應該仍然是一個浮動 – mkral 2012-08-02 16:38:15

+0

好吧,我明白你現在要問什麼。我認爲精度不會改變,因爲無論是否正常化,您仍然使用浮點值。 – mkral 2012-08-02 16:42:10

+0

如果滑塊的長度爲900像素,我將它放置在像素300上,在一種情況下,我得到的值爲0.3333,而另一個值爲0.00000。在一種情況下,我會發生舍入錯誤,而另一種情況則不會。或者我錯過了什麼? – Ant 2012-08-02 17:26:39

回答

1

我懷疑你擔心這裏的不重要的事情。首先,單精度浮點數的分數爲23位,所以舍入誤差小於2 ** 24中的一部分。這大大超出了屏幕的分辨率,因此在顯示屏中不會看到四捨五入的效果。其次,即使您爲端點設置了舍入值,滑塊座標仍然必須映射到屏幕像素,反之亦然,其他軟件可能會涉及非循環值。

+0

正確 - 接受這樣一個事實,即您永遠不會獲得完全特定數字的值(除非爲0)。 – 2012-08-09 10:39:41

+0

@AdamB有趣的是,我只對0確實感興趣,但已經接受了這樣一個事實,即我可能永遠不能保證獲得除了最終值之外的任何值。 – Ant 2012-08-09 15:32:57