数値の下四桁を取得するには?
数値の下四桁を取得するメソッドを実装するとしたら?
元ネタが Visual Basic .NET (VB.NET) なので、そのまま VB で書きますが、C# その他の言語でも同じです。
前提条件として、0以上の数値を受け取ります。仮に負の値にも対応する時は一貫した動作をするべきとします。
四桁以下の数値を返します。
Option Explicit On
Option Strict On
Option Infer On
Module Program
Public Function GetLastFourDigitsBadImplementation(value As Integer) As Integer
Dim s = Str(value)
Return CInt(Right(s, 4))
End Function
Public Function GetLastFourDigits(value As Integer) As Integer
Return value Mod 10000
End Function
Sub Main()
Dim values = {0, 1, 12, 123, 1234, 12345, 123456, -123, -1234}
For Each value In values
Console.WriteLine(GetLastFourDigitsBadImplementation(value))
Console.WriteLine(GetLastFourDigits(value))
Next
End Sub
End Module
実行結果
0
0
1
1
12
12
123
123
1234
1234
2345
2345
3456
3456
-123
-123
1234
-1234
すぐに文字列をこねこねしだす人がいます。整数型の世界で済む話であればそうすべきです。
数値を文字列に変換、さらに文字列から数値に変換することで余計な処理が発生します
文字列操作は遅いです
(仮に負の値に対応する場合)今回の仕様である一貫性のある値を返しません。`-123` と `-1234` を渡したときの結果を見てください
原則
極力、型変換はしない。同じ型の性質の中でできることをする。
極力、文字列操作はしない。ファイル・ネット関係の入出力やUI関係は文字列操作が必要な世界だが、それらとの境界をはっきりさせる。
非効率なコードを長い行数で書かない
この記事が気に入ったらサポートをしてみませんか?