Числовые объекты. Числа в JavaScript

Числа в JavaScript

При создании сценариев JavaScript использует два возможных типа чисел: целые и с плавающей точкой. Целые числа не имеют дробной части и не содержат разделительной точки. Числа с плавающей точкой имеют целую и дробную части, разделенные точкой.

Операции с целыми числами процессор компьютера выполняет значительно быстрее, чем операции с числами, имеющими точку. Это обстоятельство имеет смысл учитывать, когда расчетов много. Например, индексы, длины строк являются целочисленными. Число n, многие числа, полученные с помощью оператора деления, денежные суммы и т. п. являются числами с плавающей точкой.

В JavaScript можно производить операции с числами различных типов. Это очень удобно. Однако при этом следует знать, какого числового типа будет результат. Если результат операции является числом с дробной частью, то он представляется как число с плавающей точкой. Если результат оказался без дробной части, то он приводится к целочисленному типу, а не представляется числом, у которого в дробной части одни нули.

Рассмотрим примеры.

2+5 // 7 – целое число
2+5.5// 7.5 – число с плавающей точкой
2.6+4.4 // 7 – целое число
7.00  // число с плавающей точкой

Числа можно представлять и в так называемой экспоненциальной форме, то есть в формате: число1е число2 или число1Е число2. Такая запись числа означает число

Рассмотрим пример.

1е5 // 100 000

2е6 // 2 000 000

1.5еЗ // 1500

+1.5еЗ // 1500

-1.5еЗ // -1500

Зе-4 // 0.0003

Числа в JavaScript можно представлять в различных системах счисления, то есть в системах с различными основаниями: 10 (десятеричной), 16 (шестнадцатеричной) и 8 (восьмеричной). К десятеричной форме представления чисел мы привыкли, однако следует помнить, что числа в этой форме не должны начинаться с 0, потому что так записываются числа в восьмеричной системе.

Запись числа в шестнадцатеричной форме начинается с префикса 0х (или 0Х), где первый символ ноль, а не буква О, затем следуют символы шестнадцатеричных цифр: 0, 1, 2, ... 9, а, b, с, d, е, f (буквы могут быть в любом регистре). Например, шестнадцатеричное число 0x4af в десятеричном представлении есть 1199.

Запись числа в восьмеричной форме начинается с нуля, за которым следуют цифры от 0 до 7. Например, 027 (в десятеричном представлении — 23). В арифметических выражениях числа могут быть представлены в любой из перечисленных выше систем счисления, однако результат всегда приводится к десятеричной форме.

Рассмотрим пример.

Функция преобразования из десятеричной в шестнадцатеричную форму. Функция в этом примере принимает в качестве параметра десятеричное число и преобразует его в строку, содержащую это же число, но в шестнадцатеричной форме. При этом мы ограничиваемся числами, не превышающими 255 (в этом случае для представления числа потребуется не более двух шестнадцатеричных цифр).

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Числовые объекты</title>
<script language="JavaScript">
function rom16(n10){
a="0123456789abcdef"
/*строка, содержащая все шестнадцатитеричные цифры */
if (n10>255) return null
var i=n10%16
var j=(n10-i)/16
rezult="0x"
rezult +=a.charAt(j)
rezult +=a.charAt(i)
return rezult
}
rom16(250)
// 0xfa
rom16(30)
// 0x1e
rom16(30)+10
//0x1e10 – склейка, а не сложение
b=parseInt(rom16(30)) +10
//40

document.write(rom16(250)+"<br>"+rom16(30)+"<br>"+rom16(30)+10 +"<br>"+b)

</script>
</head>

<body>
</body>
</html>

В окне веб-браузера это будет выглядеть ТАК.

Функцию rom16() можно также создать на основе массивов.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Числовые объекты</title>
<script language="JavaScript">
function rom16(n10){
a=new Array("0","2","3","4","5","6","7","8","9","a","b","c","d","e","f")

if (n10>255) return null
var i=n10%16
var j=(n10-i)/16
rezult="0x"
rezult +=a[j]
rezult +=a[i]
return rezult
}
rom16(250)
rom16(30)
rom16(30)+10
b=parseInt(rom16(30)) +10
document.write(rom16(250)+"<br>"+rom16(30)+"<br>"+rom16(30)+10 +"<br>"+b)

</script>
</head>

<body>
</body>
</html>

В окне веб-браузера это будет выглядеть ТАК.

Рассмотрим еще один пример, где функция rom2() в качестве параметра мринимает десятичное число и преобразует его в строку, содержащую это же число, но в двоичной форме. Эта строка состоит из нулей и единиц. Здесь используется рекурсивный вызов функции rom2() самой себя. Обратите внимание, что использование ключевого слова var здесь принципиально важно из-за рекурсии, иначе функция будет работать неправильно.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Числовые объекты</title>
<script language="JavaScript">
function rom2(n10) {
if (n10<2)
return ""+n10
//чтобы результат был строковым
var i=n10%2
var j=(n10-i)/2
return rom2(j)+i
}

document.write(rom2(250)+"<br>"+ rom2(1)+"<br>"+rom2(12))
</script>

</head>

<body>
</body>
</html>

В окне веб-браузера это будет выглядеть ТАК.

Для преобразования строк, содержащих числа, в данные числового типа служат встроенные функции parseInt() и parseFloat(), соответственно для представления в целочисленном виде и в виде числа с плавающей точкой. Их мы уже рассматривали ранее. Здесь следует отметить, что параметрами этих функций могут быть строки, содержащие числа не только в десятеричной, но и в шестнадцатеричнои, и в восьмеричной формах. Для указания основания системы счисления служит второй параметр этих функций.

Рассмотрим пример.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Числовые объекты</title>
<script language="JavaScript">
parseInt("ff",16)
//значение равно 255
parseInt("ff")
//значение равно NaN
parseInt("010")
//значение равно 8
parseInt("010",8)
//значение равно 8
parseInt("010",10)
//значение равно 10
parseInt("010",2)
//значение равно 2
parseInt("010",16)
//значение равно 16
parseFloat(""+25.78)//значение равно 25.78
parseFloat(""+2.5e3)
//значение равно 2500

document.write(parseInt("ff",16)+"<br>"+parseInt("ff")+
"<br>"+parseInt("010")+"<br>"+parseInt("010",8)+"<br>"
+parseInt("010",10)+"<br>"+parseInt("010",2)+"<br>"+parseInt("010",16)+
"<br>"+ parseFloat(""+25.78)+"<br>"+ parseFloat(""+2.5e3) )
</script>

</head>

<body>
</body>
</html>

Внимание! Функция parseFloat() в IE6.0 работает неправильно, если указан второй параметр (основание системы счисления).
Для преобразования числа в строку, содержащую это число, достаточно использовать выражение сложения пустой строки с числом.

"" + 25.78 // значение равно "25.78"
"" + 2.5еЗ // значение равно "2500"

В окне веб-браузера это будет выглядеть ТАК.




  • Другие |
назадвверхвперед
Rambler's Top100