Cách nào là cách tốt nhất để so sánh BigDecimal và int trong Java: coverting BigDecimal thành int hoặc chuyển đổi int thành BigDecimal?So sánh BigDecimal và int trong Java
Trả lời
Nếu bạn mong đợi giá trị BigDecimal
là thực sự lớn (tức là bên ngoài phạm vi của int
giá trị, đó là -2 -2 -1) và/hoặc để chứa chữ số thập phân, hoặc đơn giản là muốn chơi an toàn, bạn nên chuyển đổi int
thành BigDecimal
để tránh lỗi tràn/cắt ngắn.
Nếu không, nếu hiệu suất là một vấn đề thực sự lớn (hiếm khi xảy ra), thì có thể sẽ tốt hơn theo cách khác.
Thats chính xác những gì tôi muốn biết! Cảm ơn @peter! – HighBit
Một lý do không chuyển đổi int thành BigDecimal là thực tế bạn sẽ tạo một đối tượng mới, do đó bạn thực sự đang đổ rác trên heap của mình để thực hiện sự bình đẳng. Ngoài ra, bình đẳng nguyên thủy sẽ nhanh hơn so với đối tượng BigInteger thực tế.
Tại sao điều này sẽ "vứt rác trên đống"? –
nhưng điều này có thể gây ra tràn và kết quả có thể sai. Nếu BigDecimal bd = maxint +1 và bd được chuyển đổi thành int kết quả sẽ là 1 – nist
Chắc chắn, nó phụ thuộc vào trường hợp sử dụng thực tế. @Oli mỗi lần cho trường hợp so sánh, bạn sẽ tạo đối tượng BigInteger mới, có thể không cần thiết và nằm trên heap, thay vì lấy giá trị nguyên thủy thực tế đã được lưu trữ trong chính đối tượng BigInt – Bober02
Bạn muốn chuyển đổi int
thành BigDecimal
.
Điều này là do bạn sẽ không luôn có thể chuyển đổi BigDecimal thành int; bạn sẽ mất mọi thông tin sau dấu thập phân và giá trị của BigDecimal có thể nằm ngoài phạm vi của một int.
Như BigDecimal
mở rộng phạm vi của int
bạn sẽ phải chuyển đổi các int
vào BigDecimal
để đảm bảo họ có thể được so sánh, dù sao đi nữa.
- 1. So sánh đối tượng và int trong Java 7
- 2. Hãy so sánh int và unsigned int
- 3. int vs Integer so sánh Java
- 4. BigDecimal trong Java
- 5. So sánh hiệu suất của int và số nguyên
- 6. So sánh C# và Java
- 7. Java so sánh Mảng
- 8. Is it OK để so sánh một int và một chặng đường dài trong Java
- 9. So sánh HashMaps trong Java
- 10. Objective C: Unsigned int so sánh
- 11. So sánh Integer đối tượng vs int
- 12. So sánh 'int' thành 'null' biên dịch
- 13. so sánh giữa con trỏ và số nguyên ('int *' và 'int')
- 14. so sánh giá trị dài trong java
- 15. So sánh Java Array
- 16. Findbugs và so sánh
- 17. Thực hiện so sánh Java
- 18. so sánh và so sánh công việc như thế nào?
- 19. So sánh chuỗi và thực hiện chuỗi trong Java
- 20. Java: khác nhau đôi và đôi trong so sánh
- 21. Có hợp lệ để so sánh một đôi với một int trong java?
- 22. Gson, JsonElement, So sánh chuỗi trong Java
- 23. So sánh hai Timestamp trong java
- 24. java So sánh hai ngày
- 25. Java So sánh Hai Lists
- 26. So sánh các chuỗi trong Java
- 27. So sánh số nguyên Java: lớn hơn
- 28. So sánh và so sánh số nguyên chuỗi PHP Weird
- 29. So sánh xấp xỉ e với Java
- 30. Equals điều hành cho số không (BigDecimal/Double) trong Java
Nếu bạn chuyển đổi BigDecimal thành int, bạn có thể vượt quá phạm vi của nó. –