2011-08-08 61 views
5

thể trùng lặp:
C# Double - ToString() formatting with two decimal places but no roundingTrong C#, làm cách nào để nhận được số giá trị dấu thập phân bắt buộc mà không làm tròn?

Tôi đang sử dụng số float và tôi muốn để có được những số điểm thập phân mà không cần bất kỳ làm tròn-off được thực hiện.

Ví dụ: float x = 12.6789 Nếu tôi muốn tối đa 2 dấu thập phân, thì tôi sẽ nhận được (x = 12,67) và NOT (x = 12,68) xảy ra khi làm tròn diễn ra.

Plz đề xuất cách tốt nhất để làm điều này.

+0

Bạn đã thử gì? Cái gì không hiệu quả? Vui lòng đăng mã của bạn và giải thích bạn đang gặp vấn đề ở đâu. – Oded

Trả lời

8

Bạn sẽ có thể sử dụng Math.Truncate() cho việc này:

decimal x = 12.6789m; 
x = Math.Truncate(x * 100)/100; //This will output 12.67 
3

Bạn có thể đạt được điều này bằng cách đúc:

float x = 12.6789; 
float result = ((int)(x * 100.0))/100.0; 
1

Có lẽ là lời kêu gọi khuôn khổ cho việc này, nhưng bạn luôn có thể viết một như:

//Scale up, floor, then round down. 
//ie: 1.557 
// scaled up: 155.7 
// floord: 155 
// scaled down: 1.55 
public float MyTruncate(float f, int precision){ 
    float scale = precision * 10; 
    return (Math.Floor(f * scale))/scale; 
} 
Các vấn đề liên quan