该算法题来自于 codewars【语言: javascript】,翻译如有误差,敬请谅解~
- 场景
你喜欢比萨,但是你更细喜欢...你的钱。当你去当地的比萨店时,有一件事让你感到意外的是,尽管他们列出了每个比萨饼的尺寸和价格,但是并没有列出每平方披萨的价格。
- 任务
- 写一个函数需要两个参数 - 直径,价格 - 并将每平方的价格返回,保留两位小数。 (作为一个数字,而不是字符串)
- 例如:
pizzaPrice(7, 4.30) // 返回 0.11 - 假设比萨是直径均匀的圆形披萨,并使用Math.PI作为π值。
- 如果参数不足,或者如果它们不是数字,直接返回0。
- 解答
- 其一
const pizzaPrice = (diameter, price) => {
if (typeof diameter == 'number' && typeof price == 'number') {
return (price/(Math.pow(diameter/2,2)* Math.PI)).toFixed(2)*1
} else {
return 0;
}
}
- 其二
function pizzaPrice(d,p) {
return Math.round(p/(Math.PI*d*d)*400)/100||0
}
- 其三
function pizzaPrice(diameter, price) {
if(arguments.length!=2) return 0;
if(typeof(arguments[0])!='number' || typeof(arguments[1])!='number') return 0;
var area = (Math.PI)*diameter*diameter/4;
return parseFloat((price/area).toFixed(2));
}
- 其四
function pizzaPrice(diameter, price) {
if(isNaN(diameter+price)) return 0;
let cost = price/(Math.PI*diameter*diameter/4);
return parseFloat(cost.toFixed(2));
}
- 其五
function pizzaPrice(d, p) {
return isNaN(d) || isNaN(p) ? 0 : +(p / (Math.PI * d * d / 4)).toFixed(2);
}