【问题标题】:Rounding float decimals to set resolution舍入浮点小数以设置分辨率
【发布时间】:2016-03-29 18:34:52
【问题描述】:

我有一个动画时间轴,其分辨率设置为 1 秒。

分辨率为 4 是 (1000/4),这意味着事件被调用 每 0.25 .5 和 0.75 秒。

我需要一种方法将用户输入的浮点小数四舍五入到设置的分辨率,以便我的时间线事件只能以分辨率中的数字开始和结束。

分辨率为 4 时,1.20 将四舍五入为 1.25,4.85 将 四舍五入到 4.75,2.5 不会被四舍五入

使用给定的浮点数和分辨率最简单的方法是什么?

【问题讨论】:

标签: c# math floating-point rounding


【解决方案1】:

只需按您的“分辨率”缩放您的值,四舍五入到最接近的整数,然后将其缩小,如下所示:

double originalValue = 1.2;
double resolution = 4;
double roundedValue;

roundedValue = Math.Round(originalValue * resolution, MidpointRounding.AwayFromZero) / resolution; // 1.25

需要MidpointRounding.AwayFromZero 选项才能将 *.5 “向上”四舍五入(即远离零)。

【讨论】:

  • 你可能想使用Math.Round(originalValue * resolution, MidpointRounding.AwayFromZero),因为默认是MidpointRounding.ToEven
猜你喜欢
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
相关资源
最近更新 更多