2013-04-22 18 views
5

Tôi có thể sử dụng Toán học cho điều ác ... Nhưng, trong một số được viết là 0.700 Tôi cần lấy "123" - Tức là, tôi cần trích xuất 3 chữ số cuối cùng trong phần thập phân của một số. Các chữ số ít quan trọng nhất, khi số đầu tiên là những gì hầu hết mọi người yêu cầu.Nhận cuối cùng (tức là endswith) 3 chữ số thập phân (.NET)

Ví dụ:

0.750-> 123 
0.5150111 -> 111 

Nó luôn luôn bắt đầu từ chữ số 5. ​​Và vâng, tôi đang lưu trữ thông tin bí mật bên trong con số này, trong một phần của số thập phân đó sẽ không ảnh hưởng đến cách số được sử dụng - mà là phần có khả năng xấu xa. Nhưng nó vẫn là cách tốt nhất xung quanh một vấn đề nhất định mà tôi có.

Tôi tự hỏi liệu thao tác toán hay chuỗi là cách ít tốn kém nhất để thực hiện việc này.

Hiệu suất không phải là vấn đề, vì tôi gọi nó một lần.

Có ai có thể thấy cách dễ dàng để thực hiện việc này không? ví dụ: Kết hợp các hàm Toán học (tôi đã bỏ qua) trong .NET?

+1

tôi sẽ chuyển đổi số thập phân thành một chuỗi và sử dụng chức năng chuỗi con. Làm thế nào để bạn lưu trữ số? Bạn có thể gặp vấn đề làm tròn. –

+0

Paul, đó là một số thập phân, không phải là gấp đôi. – Joey

Trả lời

5

Đó là một yêu cầu kỳ lạ để đảm bảo. Nhưng có một cách để có được một giá trị int 3 chữ số cuối cùng là như vậy:

int x = (int)((yourNumber * 10000000) % 1000); 

tôi sẽ đoán có một cách tốt hơn để có được những thông tin mà bạn đang tìm kiếm đó là sạch, nhưng với những gì bạn đã yêu cầu, điều này sẽ làm việc.

+0

Điều này có thể gây tràn. –

+0

@StefanSteinegger Chắc chắn - nhưng các số ví dụ OP có vẻ hàm ý các giá trị dưới 1.0. Nếu OP sử dụng số lớn hơn, thì cần phải tính đến sự tràn ngập. – Gjeltema

+0

Đó là sự thật, tôi đã không đề cập đến nó nhưng con số sẽ luôn luôn là <= 1.0 – PandaWood

2

Sử dụng modulo sẽ giúp bạn có được 3 chữ số cuối cùng:

var d = 0.7000123m; 
d = d * 10000000 % 1000; 

d bây giờ sẽ giữ giá trị 123.

+0

Đó không phải là số thập phân. Đó là một đôi. – recursive

+0

cổ vũ, câu trả lời được cập nhật. –

+0

Điều này có thể gây tràn. –

3

Đầu tiên chuyển đổi số của bạn thành chuỗi.

string s = num.ToString(); 


string s1 = s.Substring(s.Length - 3, 3); 

Bây giờ s1 Có Bài 3 chữ số của số

0

Hãy thử điều này:

string value= "0.1234567"; 
    string lastthreedigit= value.Substring(value.Length - 3); 
Các vấn đề liên quan