정수는 {..., -2, -1, 0, 1, 2, ...} 집합에 속하는 수예요.
정수의 최댓값과 최솟값은 PHP가 실행되는 시스템에 따라 결정돼요.
일반적으로 대부분의 현대 시스템에서 정수는 64비트 값이에요. 즉, -9_223_372_036_854_775_808부터 9_223_372_036_854_775_807까지 포함해 표현할 수 있어요.
<?php
$a = 1234;
$a = 1_234_567;
진법 접두사를 사용하면 10진법이 아닌 다른 진법으로 정수 리터럴 값을 작성할 수 있어요:
<?php
$a = 0123; // octal number (equivalent to 83 decimal)
$a = 0o123; // octal number (as of PHP 8.1.0)
$a = 0x1A; // hexadecimal number (equivalent to 26 decimal)
$a = 0b11111111; // binary number (equivalent to 255 decimal)
PHP 문서에서 가져왔어요.
부동소수점 수는 PHP에서 실수의 부분집합을 표현하는 데 사용돼요. 부동소수점 수는 하나 이상의 숫자로 시작하고, 그 숫자들은 소수점 구분 기호로 나뉘어요.
<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
$d = 1_234.567; // as of PHP 7.4.0
부동소수점 수로는 모든 수와 산술 연산을 수행할 수 없어요. 달러와 센트를 표현할 때 부동소수점 수를 사용하면 반올림 오류가 발생할 수 있어요.
<?php
$result = 0.1 + 0.2; // => 0.30000000000000004
PHP는 산술 연산을 수행하기 위한 여러 연산자를 제공해요. PHP의 산술 연산자는 표준 수학 연산 순서를 따라요. PHP가 제공하는 연산자는 다음과 같아요:
$moles = +'10';
$aLotOfMoles = 6.022 * 10**23 * $moles;
Lilly는 요리를 좋아해요. 친구들과 함께 피자 파티를 열고 싶어 하죠. 재료를 최대한 알차게 쓰려면, 시작하기 전에 각 재료가 얼마나 필요한지 알아야 해요.
이를 위해 Lilly는 계획의 일부를 자동화할 프로그램을 초안으로 작성했지만, 완성하는 데 도움이 필요해요. Lilly가 비율이 완벽한 피자 파티를 열 수 있도록 도와줄래요?
Lilly는 크러스트가 얇은, 바삭한 피자를 좋아해요. 가운데 부분에 필요한 반죽은 최소 200g이고, 나눠 먹을 사람이 한 명 늘 때마다 반죽이 20g씩 더 필요해요.
grams = pizzas * ((persons * 20) + 200)
Lilly에게는 다음과 같은 함수가 필요해요:
예를 들어, 여덟 명이 먹을 피자 네 판을 만들려면:
<?php
$pizza_pi = new PizzaPi();
$pizza_pi->calculateDoughRequirement(4, 8);
// => 1440
Lilly는 소스를 바를 때 아주 꼼꼼하지만, 피자 크기는 들쭉날쭉할 수 있어요. 경험상 피자 한 판에 소스가 125mL 필요하다는 것을 알고 있죠. Lilly에게는 사야 할 소스 통의 개수를 계산하는 함수가 필요해요.
cans of sauce = pizzas * sauce per pizza / sauce can volume
예를 들어, 피자 여덟 판을 만들어야 하고 각 통이 250mL라면:
<?php
$pizza_pi = new PizzaPi();
$pizza_pi->calculateSauceRequirement(8, 250);
// => 4
치즈는 완벽한 정육면체 모양으로 나오고, 크기별로 판매해요.
Lily가 쓰는 공식은 피자의 넓이를 구하는 공식이 아니에요. 치즈가 피자 전체를 덮는 것을 원하지는 않기 때문이죠.
그래서 한 변의 길이가 cheese_dimension인 치즈 정육면체로 지름이 diameter인 피자를 몇 판 만들 수 있는지 구하기 위해 다음 공식을 쓰기로 했어요:
pizzas = (cheese_dimension³) / (thickness * PI * diameter)
다음과 같은 함수를 만들어 봐요:
예를 들어, 25x25x25cm 치즈 정육면체와 0.5cm 두께의 치즈 층, 지름 30cm의 피자가 주어졌다면:
<?php
$pizza_pi = new PizzaPi();
$pizza_pi->calculateCheeseCubeCoverage(25, 0.5, 30);
// => 331
마지막으로, Lilly는 피자를 각각 여덟 조각으로 나눠 친구들에게 똑같이 나눠 주고 싶어 해요.
다음과 같은 함수를 만들어 봐요:
예를 들어:
<?php
$pizza_pi = new PizzaPi();
$pizza_pi->calculateLeftOverSlices(2, 4);
// => 0
$pizza_pi->calculateLeftOverSlices(4, 3);
// => 2
Exercism에 가입하고 PHP 트랙을 개념 11개연습 문제 122개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.