Javascript 我被困在里面了

Javascript 我被困在里面了,javascript,math,rounding,Javascript,Math,Rounding,您好,我想在javascript中舍入一个数量,但无法做到,完全卡住了。 我的情况是,我有一个base金额和marukup%在base上。在这两个基础上,我想计算总金额。我已经计算了金额,但我想把结果四舍五入。 我用了下面的公式 amount=base+((base/100)*标记 这个公式总是给我不带小数点的结果。我想得到精确到两个小数点的数值。我用了math.round像这样 amount=math.round(基数+((基数/100)*标记)。toFixed(2) 但是它总是返回不带小数点

您好,我想在javascript中舍入一个数量,但无法做到,完全卡住了。 我的情况是,我有一个
base
金额和
marukup%
base
上。在这两个基础上,我想计算总金额。我已经计算了金额,但我想把结果四舍五入。 我用了下面的公式

amount=base+((base/100)*标记

这个公式总是给我不带小数点的结果。我想得到精确到两个小数点的数值。我用了
math.round
像这样

amount=math.round(基数+((基数/100)*标记)。toFixed(2)

但是它总是返回不带小数点的结果。例如,我的基值是
121
,标记是
5%
金额应该是
127.05
。但是上面的公式总是返回
127
。有什么准则吗?

这应该有效: amout=(数学四舍五入((基数*(1+标记))*100)/100.toFixed(2)

顺便说一下,我使用的标记是5/100…

这应该可以: amout=(数学四舍五入((基数*(1+标记))*100)/100.toFixed(2)


顺便说一下,我使用的标记是5/100…

我很确定math.round会返回一个整数。即使你对它进行四舍五入,它也只会是127.00

以下是正确的解决方案(但并不容易):
不要将非整数值用于货币!
它不起作用

使用以美分为单位的整数。 也就是说,在应用程序中保留12700而不是127。

那样的话,所有的四舍五入都应该很好。

我很确定math.round会返回一个整数。即使你对它进行四舍五入,它也只会是127.00

以下是正确的解决方案(但并不容易):
不要将非整数值用于货币!
它不起作用

使用以美分为单位的整数。 也就是说,在应用程序中保留12700而不是127。

那样的话,所有的取舍都会很好地工作。

听起来像是一个整数除法问题。我猜javascript将100视为一个整数

试试这个:

amount=(base+((base/100.toFixed(2))*markup).toFixed(2)

听起来像是一个整数除法问题。我猜javascript将100视为一个整数

试试这个:

amount=(base+((base/100.toFixed(2))*markup).toFixed(2)
toFixed(n)
函数将数字舍入到n位小数,根本不需要使用
Math.round
。尝试:

total = function (base, markup) { return (base + (base * markup / 100)); }; 
amount = total(121,5).toFixed(2);
请注意,
amount
将是
typeof String
而不是
Number
toFixed(n)
函数将数字舍入为n位小数,根本不需要使用
Math.round
。尝试:

total = function (base, markup) { return (base + (base * markup / 100)); }; 
amount = total(121,5).toFixed(2);

请注意,
amount
将是
typeof String
,而不是
Number

不知道您在做什么,但
121+((121/100)*5)
总是给我
127.05
数学。舍入
就我所知,这是你不想要的。@Flex-Kling谢谢,但我想把答案舍入到2位小数。我怎么能做到呢?你想知道的关于javascript舍入和格式化为货币的所有事情:不知道你在做什么,但是
121+((121/100)*5)
总是给我
127.05
数学。舍入
就我所知,这是你不想要的。@Flex-Kling谢谢,但我想把答案舍入到2位小数。我怎么做呢?你想知道的关于javascript舍入和货币格式的一切: