回答編集履歴

1

雰囲気コード追加.

2019/05/10 08:36

投稿

fana
fana

スコア11663

test CHANGED
@@ -9,3 +9,33 @@
9
9
  I.99999...
10
10
 
11
11
  を作って,それが入力値と等しいか否かを判定するとか…?
12
+
13
+
14
+
15
+ ---
16
+
17
+
18
+
19
+ 雰囲気コードを書いてみた.
20
+
21
+ ```cshrp
22
+
23
+ decimal Input = 112.99999m; //何か入力値があって…
24
+
25
+
26
+
27
+ //とりあえず入力値が正だとしたらこんな処理?
28
+
29
+ //(負の場合も同じような感じで)
30
+
31
+ decimal I = (decimal)( (int)Input ); //小数点以下を切り捨てた値
32
+
33
+ var N = ( decimal.GetBits( Input )[3] >> 16 ) & 0x7F; //小数点以下の桁数
34
+
35
+ decimal Nines = 1m - (decimal)Math.Pow( 0.1, N ); //0.999.. と9がN個並ぶ
36
+
37
+
38
+
39
+ decimal Result = ( (I + Nines)==Input ? I+1m : I ); //判定して結果値を作る
40
+
41
+ ```