私はJavaScriptに非常に慣れていない(Java背景から来た)ので、少額のお金でいくつかの財務計算をしようとしています。
これの私の最初の行きは次のとおりでした:
<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>
これは、常に切り上げられる(Math.ceil
)ことを除いて、うまく機能しました。 Math.floor
にも同じ問題があり、Math.round
もフロートに適していません。
Javaでは、フロートの使用を完全に回避していましたが、JavaScriptでは、同等のものがデフォルトで含まれているようには見えません。
問題は、言及されているすべてのライブラリが壊れているか、別の目的で使用されていることです。 jsfromhell.com/classes/bignumber
ライブラリは必要なものに非常に近いですが、丸めと精度に奇妙な問題があります... Round Typeを何に設定しても、独自に決定するようです。したがって、たとえば、精度が2でROUND_HALF_UP
の丸型の3.7107は、3.71であるべきところ、なんとか3.72に巻き上げられます。
@JasonSmith BigDecimalライブラリ(JavaのBigDecimalからの機械加工されたポート)も試しましたが、実行するオプションがないnode.jsのようです。
バニラJavaScriptを使用してこれをどのように達成できますか(そして信頼性があります)、または維持され、破損していない使用可能な最新の(上記のものはすべて古いものです)ライブラリがありますか?
数字、お金、通貨のフォーマットにaccounting.js
を使用するのが好きです。