У меня проблема с этим кодом:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
showStatusBar="false"
width="250" height="31">
<s:layout>
<s:HorizontalLayout gap="10" paddingBottom="10" paddingLeft="10" paddingRight="10"
paddingTop="10" verticalAlign="middle"/>
</s:layout>
<fx:Script>
<![CDATA[
[Bindable]
private var i:Number = 1.0;
private function click(e:MouseEvent):void
{
if (e.currentTarget == plus)
i += .1;
if (e.currentTarget == minus)
i -= .1;
}
]]>
</fx:Script>
<s:Button id="plus" width="30" label="+" click="click(event)"/>
<s:Button id="minus" width="30" label="-" click="click(event)"/>
<s:Label text="{i}"/>
Когда я нажимаю '+', я получаю
1,1 (ОК)
1.2000000000000002 (вместо 1,2)
1.3000000000000003 (вместо 1,3)
1.4000000000000004 (вместо 1.4)
1,5000000000000004 (вместо 1,5)
1.6000000000000005 (вместо 1.6)
1,7000000000000006 (вместо 1,7)
1,8000000000000007 (вместо 1,8)
1,9000000000000008 (вместо 1,9)
2.000000000000001 (вместо 2.0)
...
И когда я нажимаю на «-», я получаю
0,9 (ОК)
0,8 (ОК)
0,7000000000000001 (вместо 0,7)
0,6000000000000001 (вместо 0,6)
0,5000000000000001 (вместо 0,5)
0,40000000000000013 (вместо 0,4)
0,30000000000000016 (вместо 0,3)
0.20000000000000015 (вместо 0,2)
0,10000000000000014 (вместо 0,1)
1.3877787807814457e-16 (вместо 0.0)
...
Я меняю свою функцию на
private function click(e:MouseEvent):void
{
if (e.currentTarget == plus)
i = Math.floor((i + 0.1) * 10) / 10;
if (e.currentTarget == minus)
i = Math.floor((i - 0.1) * 10) / 10;
}
Я получаю правильный номер, когда нажимаю только «+» или только на «-»
Но если я нажимаю «-» до 0,7 и «+», он остается на уровне 0,7
То же самое добавляется, когда я нажимаю «-» до 0,9, когда «+», оно остается до 0,8
Почему? Как я могу сделать, чтобы увеличить или уменьшить число на 0,1?