Chức năng Math.Round(...)
có Enum để cho biết chiến lược làm tròn để sử dụng. Thật không may hai định nghĩa sẽ không chính xác phù hợp với tình hình của bạn.
Hai chế độ Midpoint làm tròn là:
- AwayFromZero - Khi một số nằm giữa hai người khác, nó được làm tròn về phía số khu vực gần đó là đi từ con số không. (Aka, tròn lên)
- ToEven - Khi một số nằm giữa hai số khác, số này được làm tròn về số chẵn gần nhất. (Sẽ ủng hộ .16 trên .17 và .18 trên .17)
Điều bạn muốn sử dụng là Floor
với một số phép nhân.
var output = Math.Floor((41.75 * 0.1) * 100)/100;
Biến số output
phải có 4,17 trong đó ngay bây giờ.
Trong thực tế, bạn cũng có thể viết một hàm để có một chiều dài thay đổi cũng như:
public decimal RoundDown(decimal i, double decimalPlaces)
{
var power = Convert.ToDecimal(Math.Pow(10, decimalPlaces));
return Math.Floor(i * power)/power;
}
bạn đã thử 'Math.Round'? – nhahtdh
Nếu bạn muốn làm tròn, bạn có thể sử dụng quá tải Math.Round điều khiển cách xử lý điểm giữa. Nếu bạn muốn sàn tất cả các thời gian, xem xét nhân với 100, sàn, sau đó chia cho 100. – John
Bạn có muốn làm tròn tiêu chuẩn cho 4.176 trở lên? –