OSDN Git Service

浮動小数点数のインクリメント・デクリメントに対応
authorkimikage <kimikage_ceo@hotmail.com>
Sat, 8 Jan 2011 19:58:34 +0000 (04:58 +0900)
committerkimikage <kimikage_ceo@hotmail.com>
Sat, 8 Jan 2011 19:58:34 +0000 (04:58 +0900)
Fugashi/MainForm.cs

index bee3567..f7f3fcc 100755 (executable)
@@ -169,6 +169,7 @@ namespace Fugashi
                 if (radioFloat.Checked)\r
                 {\r
                     SetForFloatingPoint(true);\r
+                    UpdateValue(GetBytes());\r
                 }\r
             }\r
         }\r
@@ -181,6 +182,7 @@ namespace Fugashi
                 if (radioFloat.Checked)\r
                 {\r
                     SetForFloatingPoint(false);\r
+                    UpdateValue(GetBytes());\r
                 }\r
             }\r
         }\r
@@ -344,7 +346,32 @@ namespace Fugashi
         {\r
             if (radioFloat.Checked)\r
             {\r
-\r
+                if (length == 4)\r
+                {\r
+                    int value = BitConverter.ToInt32(GetBytes(), 0);\r
+                    if (value == -0x80000000)\r
+                    {\r
+                        value = 0;\r
+                    }\r
+                    else\r
+                    {\r
+                        value += value >= 0 ? 1 : -1;\r
+                    }\r
+                    UpdateAll(BitConverter.GetBytes(value));\r
+                }\r
+                else\r
+                {\r
+                    long value = BitConverter.ToInt64(GetBytes(), 0);\r
+                    if (value == (1L << 63))\r
+                    {\r
+                        value = 0;\r
+                    }\r
+                    else\r
+                    {\r
+                        value += value >= 0 ? 1 : -1;\r
+                    }\r
+                    UpdateAll(BitConverter.GetBytes(value));\r
+                }\r
             }\r
             else\r
             {\r
@@ -352,11 +379,37 @@ namespace Fugashi
                 UpdateAll(BitConverter.GetBytes(++value));\r
             }\r
         }\r
+\r
         private void buttonDec_Click(object sender, EventArgs e)\r
         {\r
             if (radioFloat.Checked)\r
             {\r
-\r
+                if (length == 4)\r
+                {\r
+                    int value = BitConverter.ToInt32(GetBytes(), 0);\r
+                    if (value == 0)\r
+                    {\r
+                        value = 1 << 31;\r
+                    }\r
+                    else\r
+                    {\r
+                        value -= value >= 0 ? 1 : -1;\r
+                    }\r
+                    UpdateAll(BitConverter.GetBytes(value));\r
+                }\r
+                else\r
+                {\r
+                    long value = BitConverter.ToInt64(GetBytes(), 0);\r
+                    if (value == 0)\r
+                    {\r
+                        value = 1L << 63;\r
+                    }\r
+                    else\r
+                    {\r
+                        value -= value >= 0 ? 1 : -1;\r
+                    }\r
+                    UpdateAll(BitConverter.GetBytes(value));\r
+                }\r
             }\r
             else\r
             {\r