轨道
/
JavaScript
JavaScript
/
练习
/
自由职业者费率
自由职业者费率

自由职业者费率

学习练习

简介

数字

许多编程语言都有专门的数字类型来表示不同类型的数字,但 JavaScript 只有两种:

  • number:一种数字数据类型,采用双精度 64 位浮点格式(IEEE 754)。 例如 -6、-2.4、0、0.1、1、3.14、16.984025、25、976、1024.0 和 500000。
  • bigint:一种数字数据类型,可以用任意精度格式表示_整数_。 例如 -12n、0n、4n 和 9007199254740991n。

如果你需要任意精度,或者要处理极其庞大的数字,就使用 bigint 类型。 否则,number 类型通常是更好的选择。

舍入

JavaScript 有一个名为 Math 的内置全局对象,它提供了各种舍入函数。 例如,你可以把小数向下取整(floor)或向上取整(ceil),得到最接近的整数。

Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235

算术运算符

JavaScript 提供了 6 种不同的运算符,用来对数字进行基本的算术运算。

  • +:加法运算符,用来求数字之和。
  • -:减法运算符,用来求两个数字之差。
  • *:乘法运算符,用来求两个数字之积。
  • /:除法运算符,用来将两个数字相除。
2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
  • %:求余运算符,用来求一次除法运算的余数。

    40 % 4; // => 0
    -11 % 4; // => -3
    
  • **:幂运算符,用来把一个数字提升到某个幂。

    4 ** 3; // => 64
    4 ** 1 / 2; // => 2
    

运算顺序

在一行里使用多个运算符时,JavaScript 会按照这张优先级表所示的顺序执行。 就我们的场景而言,可以简化成我们在小学数学课上学过的 PEDMAS 法则(括号、指数、除法/乘法、加法/减法)。

const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45

简写赋值运算符

简写赋值运算符是一种更简短的写法:它对变量进行算术运算,并把新值赋值给同一个变量。 例如,假设有两个变量 x 和 y。 那么,x += y 等同于 x = x + y。 很多时候,这里用的是数字而不是变量 y。 其余 5 种运算也可以用类似的方式书写。

let x = 5;
x += 25; // x is now 30

let y = 31;
y %= 3; // y is now 1

说明

在这个练习中,你要编写代码,帮助一位自由职业者就某些项目的价格与客户沟通。 你将编写几个工具函数,快速算出客户的费用。

Note

ratePerHour 变量和 dayRate 函数都与钱有关。 它们的计量单位是每个单位时间对应的金额:分别是小时和天。

1. 根据时薪计算日薪

一位客户联系这位自由职业者,询问收费标准。 自由职业者解释说,他们**每天工作 8 小时。** 但他们只知道这个项目的时薪。 请根据时薪帮他们估算日薪。

dayRate(89);
// => 712

日薪不需要四舍五入,也不需要转换成“固定”精度。

2. 根据固定预算计算工作天数

又过了一天,一位项目经理请这位自由职业者做一个预算固定的项目。 请根据固定预算和这位自由职业者的时薪,帮他们算出预算用完之前可以工作多少天。 结果_必须_向下取整为最接近的整数。

daysInBudget(20000, 89);
// => 28

3. 计算大型项目的折扣价

客户常常请这位自由职业者做持续好几个月的大项目。 这种情况下,自由职业者决定对每个完整月份给出折扣,剩余的天数按日薪计费。 你的工作与生活平衡得很好,每个自然月只工作 22 天,所以**每个月的计费天数是 22 天。** 请根据时薪、项目包含的计费天数以及每月折扣率,帮他们估算这类项目的费用。 折扣总是以数字形式传入,其中 42% 会写成 0.42。结果_必须_向上取整为最接近的整数。

priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
JavaScript Exercism

准备好开始 自由职业者费率 了吗?

注册 Exercism,借助 37 个概念159 个练习 和真人导师指导,学习并掌握 JavaScript,全部免费。