c# - 仅使用数学函数的规则向上/向下舍入?

标签 c# .net math

一些数学人员请帮忙,我只想使用数学进行转换。功能。 (Pow, Floor......等) 可能只有一个语句,不使用 if else 检查小数点后的第 5 个数字是 1-4 还是 6-9 。

  • 我想按照以下规则将小数点后 5 位转换为小数点后 5 位,最后总是 5 和 0。

规则 1:

double number1 = 1.2345* 
if( * from 1 to 4)
   number1 ==> 1.23455 
if ( * from 6 to 9)
  number1  ==> 1.23460 

规则 2:

double number2 = 1.2345* 
if( * from 1 to 4)
   number2 ==> 1.23450 

if ( * from 6 to 9)
  number2  ==> 1.23455 

我想出了规则 1 的答案,但它需要 2 个语句,我想知道是否只用 1 个语句就可以完成

number1 = Math.Floor((number1 + 0.00005) * 20000) / 20000 - 0.00005;
number1 = Math.Floor((number1 + 0.00005) * 20000) / 20000 ;

谢谢

最佳答案

对于规则 #1:

var y = (int)((x - 0.00001) * 20000) / 20000.0 + 0.00005;

结果:

1.23450 => 1.23450
1.23451 => 1.23455
1.23452 => 1.23455
1.23453 => 1.23455
1.23454 => 1.23455
1.23455 => 1.23455
1.23456 => 1.23460
1.23457 => 1.23460
1.23458 => 1.23460
1.23459 => 1.23460
1.23460 => 1.23460

规则#2:

var y = (int)(x * 20000) / 20000.0;

结果:

1.23450 => 1.23450
1.23451 => 1.23450
1.23452 => 1.23450
1.23453 => 1.23450
1.23454 => 1.23450
1.23455 => 1.23455
1.23456 => 1.23455
1.23457 => 1.23455
1.23458 => 1.23455
1.23459 => 1.23455

关于c# - 仅使用数学函数的规则向上/向下舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6234667/

相关文章:

c# - 如何创建为 SelectMany resultSelector 返回匿名类型的 C# LambdaExpression

c# - 如何在 ASP.NET 中动态创建新的超链接?

javascript - Canvas 像大轮子一样旋转矩形

c# - 将 Func<T> 转换为 Func<object>

C#计算器指数函数。如何?

c# - 将按钮绑定(bind)到不同的 ViewModel [MVVM]

c++ - 对以下 c/c++ 解决方案的逻辑解释

python - 正向/反向运动学计算 2DOF python

c# - 如何使用 C# 从 Windows 中提取位置信息?

使用 7zip 的 C# 归档,一直卡在通配符调用上