2021/12/08(Wed) 19:06:28 編集(投稿者)
■No98631 (ゆい さん) に返信
> これを例えば金額とすれば、0円、5円、10円・・と言ったように
> 5円単位での「切り上げ・切り捨て」する方法を教えてください。
仕様がはっきりしないですね・・・
Sub Main()
Console.WriteLine("切り上げ")
For value As Double = 0 To 11
Console.WriteLine($"{value} → {Ceiling(value, 5)}")
Next
Console.WriteLine("切り捨て")
For value As Double = 0 To 11
Console.WriteLine($"{value} → {Truncate(value, 5)}")
Next
Console.WriteLine("四捨五入?")
For value As Double = 1.9 To 3.1 Step 0.1
Console.WriteLine($"{value} → {Round(value, 5)}")
Next
Console.ReadKey()
End Sub
Function Ceiling(ByVal value As Double, ByVal unit As Double) As Double
Return Math.Sign(value) * Math.Truncate((Math.Abs(value) + unit - unit / 10) / unit) * unit
End Function
Function Truncate(ByVal value As Double, ByVal unit As Double) As Double
Return Math.Sign(value) * Math.Truncate(Math.Abs(value) / unit) * unit
End Function
Function Round(ByVal value As Double, ByVal unit As Double) As Double
Return Ceiling(Truncate(value * 2, unit) / 2, unit)
End Function
キャストが面倒なので全部 Double に。(^_^;)
どうも図表モードにするのを忘れてしまう・・・