Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Тут прописаны все возможные числительные, вернее их названия на английском.
- //Числа до 12 включительно обладают уникальными названиями
- let upToTwelve = [
- '', 'one', 'two', 'three', 'four', 'five', 'six', 'seven',
- 'eight', 'nine', 'ten', 'eleven', 'twelve'
- ];
- //Десятки. Все, что до 60 - нельзя собрать из предыдущего массива чисел от 1 до 12.
- //Проще создать новый для этой задачи и прописать в нем все правильно.
- let dozens = [
- 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy',
- 'eighty', 'ninety'
- ];
- //Та же ситуация для чисел от 13 до 19 - прописываем отдельно
- let teens = [
- 'thir', 'four', 'fif', 'six', 'seven', 'eight', 'nine'
- ]
- //Ну и наименования для каждого 4-го разряда - тысячи, миллионы и.т.д
- let fourDigit = [
- '', ' thousand ', ' million ', ' billion ', ' trillion '
- ]
- function getNameOfDozens(value) {
- //Принимает числа от 0 до 99, возвращая запись этих чисел в текстовом виде
- var result = '';
- switch (true) {
- case (value < 13):
- result = upToTwelve[value]; break;
- case (value < 20):
- result = (teens[value % 10 - 3] + 'teen'); break;
- case (value < 100):
- //value / 100 дает в результате операции вещественное число, по которому нельзя адресовать элемент массива
- //Побитовое ИЛИ (|) конвертирует веществвенное число в целое, обрубая вещественную часть.
- result = (dozens[(value / 10 | 0) - 2] + ' ' + upToTwelve[value % 10]);
- break;
- default:
- alert("wrong value"); break;
- }
- return result;
- }
- function getNameOfHundreds(value) {
- //Возвращает текстовую запись чисел от 0 до 999 - стало быть все числа от 1 до 3 разряда.
- //Это базовая функция, поскольку в любом крупном числе всегда есть перечисление сотен.
- if (value < 100) {
- return getNameOfDozens(value);
- }
- return upToTwelve[value / 100 | 0] + ' hundred ' + getNameOfDozens(value % 100);
- }
- 1456
- function getName(value) {
- //Возвращает текстовую запись любого числа в пределах прописанного
- var result = '';
- var fourIndex = 0;
- while (value > 0) {
- hundreds = value % 1000;
- value = value / 1000 | 0;
- result = getNameOfHundreds(hundreds) + fourDigit[fourIndex] + result;
- fourIndex++;
- }
- return result;
- }
- function toReadable(value) {
- var result = '';
- //Заранее проверим на отрицательное число. Если так - запишем заранее в выходную строку слово "минус" и сделаем число положительным
- if (value < 0) {
- result = 'minus ';
- value = -value;
- }
- //Для удобства ноль обрабатывается отдельно - это позволяет не мудохаться с границами массивов во внутренних функциях.
- if (value == 0) {return 'zero'}
- return result + getName(value);
- }
- const input = prompt("Input value: ");
- console.log(toReadable(input));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement