2012-01-03 61 views
12

Tôi đang xây dựng trang web thương mại điện tử được tích hợp với paypal.Cách thích hợp để làm tròn cho chuyển đổi tiền tệ trong Paypal?

Chúng tôi nhận nhiều loại tiền tệ, vì vậy tôi muốn đảm bảo rằng (vì lý do kế toán) tôi đang thực hiện đúng bất kỳ phép tính nào để quy đổi tiền tệ.

Sau khi nhân quy đổi tiền tệ * đơn vị tiền tệ ban đầu, tôi luôn kết thúc bằng nhiều số sau sau dấu thập phân.

Có cách nào tiêu chuẩn để thực hiện việc này không? Tôi có nên cắt ngắn hoặc tròn? Tôi có cần phải làm tròn nhiều lần trong trường hợp làm tròn số thập phân 1/1000 sẽ ảnh hưởng đến làm tròn số thập phân 1/100 không?

Tôi có nên làm một cái gì đó như:

Math.Round(Math.Round(x, 3), 2) 

Tôi đã gặp khó khăn trong việc tìm kiếm thông tin tốt về cách này được thực hiện (hy vọng Mỹ và châu Âu đều giống nhau).

+0

bạn có thể sử dụng một số loại định dạng được dựa trên số vị trí thập phân mà bạn đang nhận được ..? – MethodMan

Trả lời

5

Bạn nên sử dụng Math.Round(x, 2, MidpointRounding.AwayFromZero)

+0

Đây không phải là "ngân hàng làm tròn" được đề cập ở trên ... bất kỳ suy nghĩ? –

+0

Tôi cho rằng vì bạn đang thực hiện quy đổi tiền tệ, điều này có thể được cho là tốt hơn nếu các bạn sẽ luôn nhận được một phần nhỏ của một xu mà không tồn tại. –

+0

À ... đây là câu trả lời cuối cùng. Sau khi nói chuyện với kế toán, được cho là thủ thuật là luôn luôn làm tròn từ 5 khi tính thuế/VAT của bạn. Bằng cách đó, bạn luôn chắc chắn/an toàn rằng bạn đã trả thuế. Chủ đề khác một chút so với bài đăng gốc - nhưng câu hỏi của tôi đã được trả lời. –

3

tôi sẽ giả sử bạn chỉ có thể trực tiếp sử dụng Math.round như NET sử dụng Bankers Rounding.

Chỉ cần nhớ để luôn luôn làm tròn là điều cuối cùng tuyệt đối bạn làm gì để không giới thiệu các lỗi làm tròn.

Trong một hệ thống tiền tệ như thế này, tôi cũng sẽ lưu trữ các giá trị thực không có tiền tố như số thập phân bổ sung cho các mục đích giải quyết vấn đề trong tương lai.

1

nếu trang web của bạn có nhiều loại tiền tệ sau đó sử dụng để đúng tròn số thập phân theo tiền tệ và nền văn hóa của người dùng hiện tại:

int currencyDecs = System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalDigits; 
decimal roundedDecimalPrice = Math.Round(decimalPrice, currencyDecs, MidpointRounding.AwayFromZero); 
Các vấn đề liên quan