2011-08-02 18 views
2

を曲げます(代わりに1.3の) 1.3000000000000003(代わりに1.4の)
1.4000000000000004
(代わりに1.5の)
1.5000000000000004 (代わりに、1.6の)1.6000000000000005
(ではなく1.7の) 1.7000000000000006
(ではなく1.8の) 1.8000000000000007
(ではなく1.9の) 1.9000000000000008
2.000000000000001(代わりに2.0)
...
そして、私はクリックしてください' - ' 私が手
0.9(OK)
0.8(OK)(代わりに0.7の)
0.7000000000000001
0.50000(ではなく0.6の)
0.6000000000000001 (代わりに、0.3)、00000000001(代わりに0.5)
(代わりに0.4の) 0.40000000000000013
0.30000000000000016
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
私はクリック同じAPPENDにとどまる - '+'、それは0.8

なぜに滞在したときに0.9まで、 ''? Numberを0.1ずつ増減するにはどうすればよいですか?

答えて

4

使用しよう:

private function click(e:MouseEvent):void 
{ 
    if (e.currentTarget == plus) 
     i = Math.round((i + 0.1) * 10)/10; 
    if (e.currentTarget == minus) 
     i = Math.round((i - 0.1) * 10)/10; 
} 

またはFlex 4.5の場合:

<?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> 
<fx:Declarations> 
    <s:NumberFormatter id="numberFormatter" trailingZeros="true" fractionalDigits="1" /> 
</fx:Declarations><s:Button id="plus" width="30" label="+" click="click(event)"/> 
<s:Button id="minus" width="30" label="-" click="click(event)"/> 
<s:Label text="{numberFormatter.format(i)}"/> 
</s:WindowedApplication> 

またはFlex 4の場合:

<?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> 
<fx:Declarations> 
    <mx:NumberFormatter id="numberFormatter" precision="1" rounding="nearest" /> 
</fx:Declarations><s:Button id="plus" width="30" label="+" click="click(event)"/> 
<s:Button id="minus" width="30" label="-" click="click(event)"/> 
<s:Label text="{numberFormatter.format(i)}"/> 
</s:WindowedApplication> 
+1

私は '恐らくMath.round((私は0.1 + 1)* 10)/ 10でそれをやった;' 、それが感謝の作品 – Snote

0

チェックこのアウト: することができますNumberFormatterを使用してNumberを適切にフォーマットしてください。私は100%確実ではありませんが、floatインクリメントを使用すると、deciで何らかの問題が発生しますマルポイント。

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> 
<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 += 0.1;   
      if (e.currentTarget == minus) 
       i -= 0.1;  
     }  
    ]]> 
</fx:Script> 
<fx:Declarations> 
    <mx:NumberFormatter id="numFormatter" precision="2" rounding="nearest"/>  
</fx:Declarations> 

<s:Button id="plus" width="30" label="+" click="click(event)"/> 
<s:Button id="minus" width="30" label="-" click="click(event)"/> 
<s:Label text="{numFormatter.format(i)}"/> 
</s:Application> 
関連する問題