我怎样才能像这样舍入值:
1.1 => 1
1.5 => 2
1.9 => 2
Run Code Online (Sandbox Code Playgroud)
__CODE__
没有帮助我.有任何想法吗?
Onl*_*ere 185
有关更多信息,请参阅官方文档 例如:
基本上你给Math.Round
方法三个参数.
示例代码:
var roundedA = Math.Round(1.1, 0); // Output: 1
var roundedB = Math.Round(1.5, 0, MidpointRounding.AwayFromZero); // Output: 2
var roundedC = Math.Round(1.9, 0); // Output: 2
var roundedD = Math.Round(2.5, 0); // Output: 2
var roundedE = Math.Round(2.5, 0, MidpointRounding.AwayFromZero); // Output: 3
var roundedF = Math.Round(3.49, 0, MidpointRounding.AwayFromZero); // Output: 3
Run Code Online (Sandbox Code Playgroud)
你需要MidpointRounding.AwayFromZero
,如果你想进行四舍五入一个0.5的值.不幸的是,这不是默认行为Math.Round()
.如果使用MidpointRounding.ToEven
(默认值),则将值四舍五入为最接近的偶数(1.5
舍入到2
,但2.5
也舍入到2
).
dev*_*oms 60
Math.Ceiling
Run Code Online (Sandbox Code Playgroud)
总是向上(向天花板)
Math.Floor
Run Code Online (Sandbox Code Playgroud)
总是向下舍入(朝向地板)
你所追求的只是简单
Math.Round
Run Code Online (Sandbox Code Playgroud)
根据这篇文章回合
有这本手册,也有点可爱的方式:
double d1 = 1.1;
double d2 = 1.5;
double d3 = 1.9;
int i1 = (int)(d1 + 0.5);
int i2 = (int)(d2 + 0.5);
int i3 = (int)(d3 + 0.5);
Run Code Online (Sandbox Code Playgroud)
只需将0.5添加到任何数字,并将其转换为int(或将其置于地板),它将在数学上正确舍入:D
您可以按照其他人的建议使用Math.Round(推荐),也可以添加0.5并强制转换为int(这将删除小数部分)。
double value = 1.1;
int roundedValue = (int)(value + 0.5); // equals 1
double value2 = 1.5;
int roundedValue2 = (int)(value2 + 0.5); // equals 2
Run Code Online (Sandbox Code Playgroud)
只是提醒.小心双倍.
Math.Round(0.3 / 0.2 ) result in 1, because in double 0.3 / 0.2 = 1.49999999
Math.Round( 1.5 ) = 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
188091 次 |
最近记录: |