Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何检查float是否只有不等于0的2位小数_Objective C_Slider_Decimal - Fatal编程技术网

Objective c 如何检查float是否只有不等于0的2位小数

Objective c 如何检查float是否只有不等于0的2位小数,objective-c,slider,decimal,Objective C,Slider,Decimal,我有一个NSSlider,我直接查看它的更改。但我希望我的操作仅在滑块的浮点值为例如2.230000或3.410000时有效 if (floatValue is y.xx0000) { doSomething; } 我的意思是,只有当我的浮点值只有两个不等于0的小数位时,我才想做一些动作。我该怎么做呢?只有两个非零小数位数的浮点值是n.00、n.25、n.50或n.75形式的数字。所有其他值都有两个以上的非零小数位数。例如,您的示例3.41实际上不是“3.41”。而是: 3.41000

我有一个NSSlider,我直接查看它的更改。但我希望我的操作仅在滑块的浮点值为例如
2.230000
3.410000
时有效

if (floatValue is y.xx0000) {
    doSomething;
}
我的意思是,只有当我的浮点值只有两个不等于0的小数位时,我才想做一些动作。我该怎么做呢?

只有两个非零小数位数的浮点值是n.00、n.25、n.50或n.75形式的数字。所有其他值都有两个以上的非零小数位数。例如,您的示例3.41实际上不是“3.41”。而是:

3.410000000000000142108547152020037174224853515625
而“2.23”实际上是:

2.229999999999999982236431605997495353221893310546875
那么你真正想做什么呢?

只有两个非零小数位数的浮点值是形式为n.00、n.25、n.50或n.75的数字。所有其他值都有两个以上的非零小数位数。例如,您的示例3.41实际上不是“3.41”。而是:

3.410000000000000142108547152020037174224853515625
而“2.23”实际上是:

2.229999999999999982236431605997495353221893310546875

那么你到底想做什么呢?

我玩这个游戏有点晚了,但我在搜索类似的东西时发现了这个问题。 在我看来,您试图做的是将滑块设置为小数点后2位的值四舍五入。这样,您试图使用滑块配置的内容和/或计算将始终有效,就好像它只适用于精确的2个十进制值一样


或者,您可以检查浮点值与四舍五入到小数点后2位的值之间的距离有多大。然后设置一个阈值,例如0.005,当它离我们很远的时候。

我玩这个游戏有点晚了,但是我在搜索类似的东西时发现了这个问题。 在我看来,您试图做的是将滑块设置为小数点后2位的值四舍五入。这样,您试图使用滑块配置的内容和/或计算将始终有效,就好像它只适用于精确的2个十进制值一样


或者,您可以检查浮点值与四舍五入到小数点后2位的值之间的距离有多大。然后设置一个阈值,例如0.005,用于距离较远的时间。

例如,如果我的滑块边界从
1.5
1.6
我只想对这些值做出反应:
1.50、1.51、1.52、1.53、1.54、1.55、1.56、1.57、1.58、1.59、1.60
和所有其他值(例如
1.510000000025251000125
)我想被忽略。哦,这很简单:1.5到1.6之间没有小数点后只有两位数的浮点值。这就是斯蒂芬在这个回答中所说的。这就是浮点数的工作原理……如果你想象它是
1.50000000000000000
,那么浮点数值存在吗?或者逗号后不能只有一个或两个大于0的数字?@JuliusPetraška:
1.5
正好是1.5,因为它是一个二元有理数(3/2)。例如,如果我的滑块范围是从
1.5
1.6
,我只想对这些值做出反应:
1.50、1.51、1.52、1.53、1.54、1.55、1.56、1.57、1.58、1.59,1.60
和所有其他(例如
1.510000000025251000125
)我希望被忽略。哦,这很简单:1.5和1.6之间没有小数点后只有两位的浮点值。这就是斯蒂芬在这个回答中所说的。这就是浮点数的工作原理……如果你想象它是
1.50000000000000000
,那么浮点数值存在吗?或者逗号后面不能只有一个或两个大于0的数字?@JuliusPetraška:
1.5
正好是1.5,因为它是一个二元有理数(3/2)。