C# 浮点数向下取整
时间: 2023-12-07 20:39:30 浏览: 73
以下是C#中浮点数向下取整的方法:
```csharp
double num = -3.146;
int precision = 3;
double factor = Math.Pow(10, precision);
double result = Math.Floor(num * factor) / factor;
Console.WriteLine(result); // 输出:-3.15
```
需要注意的是,当对负数进行四舍五入时,需要先判断其正负,再进行取整操作,否则会得到错误的结果。
相关问题
C# 向上取整和向下取整
以下是C#中向上取整和向下取整的方法:
```csharp
double num = 77.5;
double down = Math.Floor(num); //向下取整,结果为77
double up = Math.Ceiling(num); //向上取整,结果为78
```
其中,`Math.Floor()`方法返回小于或等于指定双精度浮点数的最大整数,即向下取整;`Math.Ceiling()`方法返回大于或等于指定双精度浮点数的最小整数,即向上取整。
C#double转化为int向下取整
在C#中,将double类型转换为int类型并实现向下取整有几种常用的方法。以下是几种常见的方法:
1. 使用强制类型转换:
```csharp
double doubleValue = 3.9;
int intValue = (int)doubleValue; // 结果为3
```
这种方法会直接截断小数部分,实现向下取整。
2. 使用Math.Floor()方法:
```csharp
double doubleValue = 3.9;
int intValue = (int)Math.Floor(doubleValue); // 结果为3
```
Math.Floor()方法会返回小于或等于指定双精度浮点数的最大整数值。
3. 使用Convert.ToInt32()与Math.Floor()结合:
```csharp
double doubleValue = 3.9;
int intValue = Convert.ToInt32(Math.Floor(doubleValue)); // 结果为3
```
这种方法结合了Math.Floor()和Convert.ToInt32(),既实现了向下取整,又进行了类型转换。
4. 使用Math.Truncate()方法:
```csharp
double doubleValue = 3.9;
int intValue = (int)Math.Truncate(doubleValue); // 结果为3
```
Math.Truncate()方法会返回数字的整数部分,移除小数部分。
需要注意的是,当double值为负数时,这些方法的行为略有不同。例如:
```csharp
double doubleValue = -3.9;
int intValue1 = (int)doubleValue; // 结果为-3
int intValue2 = (int)Math.Floor(doubleValue); // 结果为-4
int intValue3 = Convert.ToInt32(Math.Floor(doubleValue)); // 结果为-4
int intValue4 = (int)Math.Truncate(doubleValue); // 结果为-3
```
根据具体需求选择合适的方法来实现向下取整。
阅读全文