2016-10-03 88 views
1

初级程序员在这里。我目前正在研究舍入号码功能javascript十进制数字

所以,起初,每个项目都会有一个价格。然后有一个额外的百分比按钮来根据插入的值增加项目价格。

所以我们假设项目A的价格是1美元,那么我在该百分比中插入价值25%。它会给我1.33。 如何编写将返回1.35而不是1.33的函数?

又如,$ 2.67成为$ 2.70 $ 12.34成为$ 12.35

这里是我的代码

var price  = parseFloat(items.price); //1 
var percentage = parseFloat(vm.data.percentage); //25% 
added_price = parseFloat(price)/(parseFloat(100) - parseFloat(percentage)) * 100; //formula 
items.price = parseFloat(added_price).toFixed(vm.data.decimal); //the result = 1.33 

有人可以帮我请?谢谢:)

+6

只是想知道,为什么是0.33 == 25% 1? – JohnnyAW

+1

将您的评分乘以2,然后使用Math.Round(rating,MidpointRounding.AwayFromZero)',然后将该值除以2. –

回答

1

步骤做到这一点“自定义”四舍五入。

  1. 乘以2,以便得到最接近的0.5。
  2. 乘以10,以便让它圆润。
  3. Round/Ceil数字关闭。
  4. 将乘除以20除。
  5. 输出已验证。 :)

乘以2并四舍五入。而FYI,它将是2.65而不是2.70。您需要使用Math.ceil()而不是round

var p1 = 2.67; 
 
var p2 = 12.34; 
 

 
function round_to_custom(num) { 
 
    num *= 20; 
 
    num = Math.round(num); 
 
    num /= 20; 
 
    return num; 
 
} 
 

 
console.log(round_to_custom(p1)); 
 
console.log(round_to_custom(p2));

使用ceil(用于获取更多$$$客户):

var p1 = 2.67; 
 
var p2 = 12.34; 
 

 
function round_to_custom(num) { 
 
    num *= 20; 
 
    num = Math.ceil(num); 
 
    num /= 20; 
 
    return num; 
 
} 
 

 
console.log(round_to_custom(p1)); 
 
console.log(round_to_custom(p2));

+0

您是一位拯救生命的先生!非常感谢! – Vinfoster0701

+0

@ Vinfoster0701谢谢。请通过接受答案来返回。 ☺ –

+0

我会的。仍然需要等待的时间限制才能接受答案:) – Vinfoster0701