c# - 如何舍入到最接近的 0.5?

标签 c# .net

在我的申请中
例 1:开始时间 12.30 (-)结束时间 16.00 在这里我得到的值为 3.7 但我需要在我的应用程序中将此 3.7 显示为 3.5 例 2:开始时间 12.00 (-)结束时间 16.00 这里我得到的值是 4.0 这里不需要改变值

(1.7,2.7,3.7,4.7,....等)表示为(1.5,2.5,3.5,4.5,..等)

那么如何为此编写一个函数,如果该值包含 (1.7,2.7) 我应该更改为 1.5,2.5 或者如果它包含 1.0,2.0 那么就不需要替换任何值?

最佳答案

这个扩展方法应该可以完成这项工作:

public decimal RoundToNearestHalf(this decimal value)
{
    return Math.Round(value * 2) / 2;
}

var num1 = (3.7).RoundToNearestHalf(); // 3.5
var num1 = (4.0).RoundToNearestHalf(); // 4.0

我在代码中使用了 decimal 类型,因为您似乎想要保持以 10 为基数的精度。如果你不这样做,那么 float/double 当然也可以。

关于c# - 如何舍入到最接近的 0.5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1389198/

相关文章:

c# - 如何在 ASP.NET MVC 上将 Content-Type 设置为 "text/plain"?

c# - 如何将 MSBuild 与引用网络标准项目的 WPF 项目一起使用

c# - 如何将图像的一部分插入图片框?

c# - 带有手动绑定(bind)的 Telerik MVC Grid Ajax

.net - MEF:标记接口(interface)用于导出

c# - 字符串格式或REGEX

c# - 如何本地化数据库驱动的网站

c# - 在 SSIS 中通过 C# 脚本向表添加派生列

c# - ViewModel 中的消息框

c# - System.BadImageFormatException 未处理 - 简单修复