将小数部分四舍五入到最接近的 0.5 倍数

Pra*_*nne 1 c#

将数字的小数部分四舍五入到最接近的 0.5 倍数的代码是什么?例如,我正在寻找这样的输出

输入=>输出
40.11 => 40.10
40.12 => 40.10
40.13 => 40.15
40.14 => 40.15
40.16 => 40.15
40.17 => 40.15
40.18 => 40.20
40.19 => 40.20

我的数字有小数部分,最多两位小数。

任何帮助是极大的赞赏。

stu*_*rtd 5

因此,如果您想四舍五入到最接近的“一半”,则需要将数字加倍,四舍五入到一位小数,然后除以二:

Math.Round(num * 2, 1) /2
Run Code Online (Sandbox Code Playgroud)

所以你的示例数据:

Console.WriteLine(Math.Round(40.11 * 2, 1) / 2);
Console.WriteLine(Math.Round(40.12 * 2, 1) / 2);
Console.WriteLine(Math.Round(40.13 * 2, 1) / 2);
Console.WriteLine(Math.Round(40.14 * 2, 1) / 2);
Console.WriteLine(Math.Round(40.16 * 2, 1) / 2);
Console.WriteLine(Math.Round(40.17 * 2, 1) / 2);
Console.WriteLine(Math.Round(40.18 * 2, 1) / 2);
Console.WriteLine(Math.Round(40.19 * 2, 1) / 2);
Run Code Online (Sandbox Code Playgroud)

返回这个(未格式化):

40.1
40.1
40.15
40.15
40.15
40.15
40.2
40.2