Tôi rất mới với JavaScript (tôi đến từ một nền Java) và tôi đang cố gắng thực hiện một số tính toán tài chính với một lượng nhỏ tiền.BigDecimal trong JavaScript
đi ban đầu của tôi lúc này là:
<script type="text/javascript">
var normBase = ("[price]").replace("$", "");
var salesBase = ("[saleprice]").replace("$", "");
var base;
if (salesBase != 0) {
base = salesBase;
} else {
base = normBase;
}
var per5 = (base - (base * 0.05));
var per7 = (base - (base * 0.07));
var per10 = (base - (base * 0.10));
var per15 = (base - (base * 0.15));
document.write
(
'5% Off: $' + (Math.ceil(per5 * 100)/100).toFixed(2) + '<br/>' +
'7% Off: $' + (Math.ceil(per7 * 100)/100).toFixed(2) + '<br/>' +
'10% Off: $' + (Math.ceil(per10 * 100)/100).toFixed(2) + '<br/>' +
'15% Off: $' + (Math.ceil(per15 * 100)/100).toFixed(2) + '<br/>'
);
</script>
này làm việc tốt ngoại trừ nó luôn làm tròn lên (Math.ceil
). Math.floor
có cùng vấn đề và Math.round
cũng không tốt cho nổi.
Trong Java, tôi đã tránh được việc sử dụng phao hoàn toàn từ khi di chuyển, tuy nhiên trong JavaScript có vẻ như không có sự bao gồm mặc định của một cái gì đó có thể so sánh được (OMG WHY!?!?!?!).
Vì vậy, tôi SO-fu đã dẫn tôi đến bài này: https://stackoverflow.com/questions/744099/is-there-a-good-javascript-bigdecimal-library
Vấn đề là, tất cả các thư viện nêu hoặc là bị hỏng hoặc cho một mục đích khác nhau. Thư viện jsfromhell.com/classes/bignumber
rất gần với những gì tôi cần, tuy nhiên tôi đang gặp vấn đề kỳ lạ với cách làm tròn và chính xác của nó ... Dù tôi đặt Loại Tròn là gì đi chăng nữa, dường như nó cũng tự quyết định. Vì vậy, ví dụ, 3.7107 với độ chính xác của 2 và loại tròn của ROUND_HALF_UP
bằng cách nào đó gió lên như 3,72 khi nó nên được 3,71.
Tôi cũng đã thử thư viện @JasonSmith BigDecimal (một cổng được gia công từ BigDecimal của Java), nhưng có vẻ như đối với node.js mà tôi không có tùy chọn chạy.
Làm thế nào tôi có thể thực hiện điều này bằng cách sử dụng JavaScript vani (và đáng tin cậy) hoặc thư viện hiện đại (đã đề cập ở trên là tất cả các năm cũ) mà tôi có thể sử dụng được duy trì và không bị hỏng?
tôi chỉ có tôi "!?!?!?! OMG TẠI SAO" thời điểm hôm qua :) – rubiii
Tôi có những khoảnh khắc OMG mỗi ngày trong JS về điều này. – user1567291