26

我有一个来自 int/int(例如 10/3)的数字(“double”)。

在 C# 上通过 Excess 近似并将其转换为 int 的最佳方法是什么?

4

4 回答 4

72

你在问System.Math.Ceiling吗?

Math.Ceiling(0.2) == 1
Math.Ceiling(0.8) == 1
Math.Ceiling(2.6) == 3
Math.Ceiling(-1.4) == -1
于 2012-02-15T15:40:14.850 回答
11
int scaled = (int)Math.Ceiling( (double) 10 / 3 ) ;
于 2012-02-15T15:41:28.390 回答
1

通过“过量近似”,我假设您正在尝试“四舍五入”双精度类型的数量。所以,@Doug McClean 的“天花板”方法效果很好。

这里有一个说明:如果你从你开始double x = 0.8;并进行类型转换,(int)x;你会得到0. 或者,如果你这样做,(int)Math.Round(x);你会得到1. 如果您开始double y = 0.4;并进行类型转换,(int)y;您会得到0. 或者,如果你这样做,(int)Math.Round(y);你会得到0.

于 2018-10-06T19:52:51.660 回答
0

考虑 2.42 ,您可以说它是 242/100 顺便说一句,您可以将其简化为 121/50 。

于 2012-02-15T15:34:02.950 回答