- ベストアンサー
C# 数字について
C#数字表示について 例 (1) 23 → 25 ※1~4までは5にして25と表示 (2) 27 → 30 ※6~9までは10にして30と表示 説明 1~4までは5に。 6~9までは10にしたいのですが、 どうしたら出来ますか? どなたか教えて戴けませんか?お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
条件の数が少ない場合には、非常に汎用的な方法として、配列を使う方法があります。 コードは、Cですが // for 0 1 2 3 4 5 6 7 8 9 const int addTable[] = {0, 4, 3, 2, 1, 0, 4, 3, 2, 1}; int a; に対して、 a += addTable[a % 10]; テーブルさえ作れば、どんなパターンでも対応できます。 10個ぐらいなら、手で作れますし、それ以上に増えれば、テーブル自体をプログラムで生成するのもありです。 もちろん、今回の場合は、本質的には5単位で繰り返すので、 const int addTable[] = {0, 4, 3, 2, 1}; int a; に対して、 a += addTable[a % 5]; でもOKです。
その他の回答 (4)
- YEND77
- ベストアンサー率56% (21/37)
エクセルなら =CEILING(A1,5) とかですが、、、
- n2201makita
- ベストアンサー率30% (8/26)
C言語のプログラムで書くと、こうかも。 main(){ int i; for(i=0; i<100; i++) printf("%d %d\n", i, ((i+4)/5)*5 ); }
補足
参考になります。 これだと繰り返し処理ですが、 TEXTBOX1 に 13 と入力したら 表示は15としたいのです。 つまり 0 と 5を丸めたいです。 例1 12 → 15 例2 36 → 40 こういう式でexcelでしたら=CEILING(A1,5)になるけど C#はどうなるのかな
- nza49739
- ベストアンサー率46% (29/62)
プログラムで書くと A += ( 5 - A % 5 ) % 5 ; 整数演算ならこれで済みます。
お礼
重要な参考戴きありがとうございます。
- m-take0220
- ベストアンサー率60% (477/782)
5で割ってから切り上げて、5をかける。 (1) 23 -> 4.6 -> 5 -> 25 (2) 27 -> 5.4 -> 6 -> 30
お礼
参考戴きありがとうございます。
補足
はい。 エクセルならこうなりますね しかしC#では、どうなるだろう 教えて戴けませんか?