Objective c 如何检查float是否只有不等于0的2位小数
我有一个NSSlider,我直接查看它的更改。但我希望我的操作仅在滑块的浮点值为例如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
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)。