Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

*номера телефонов в JS

Автор Python, октября 24, 2020, 10:33

0 Пользователи и 1 гость просматривают эту тему.

Python

Цитата: KW от октября 24, 2020, 09:58

http://piccy.info/view3/14036556/9439545437a205c28cffd94b797ae1d0/
Где-то передали номер телефона как число (а не строку), которое, с точки зрения JS, после определенной величины всегда обрабатывается как float.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

zwh

Цитата: Python от октября 24, 2020, 10:33
Где-то передали номер телефона как число (а не строку), которое, с точки зрения JS, после определенной величины всегда обрабатывается как float.
А JS вообще различает число и строку (если явно не определять тип или пробел в зад не совать)?

Python

Цитата: zwh от октября 24, 2020, 11:50
Цитата: Python от октября 24, 2020, 10:33
Где-то передали номер телефона как число (а не строку), которое, с точки зрения JS, после определенной величины всегда обрабатывается как float.
А JS вообще различает число и строку (если явно не определять тип или пробел в зад не совать)?
Различает, хотя и преобразовывает одно в другое неявным образом без лишних усложнений.

> "123456789012345678901234567890"
'123456789012345678901234567890'

> +"123456789012345678901234567890"
1.2345678901234568e+29

> 123456789012345678901234567890+''
'1.2345678901234568e+29'
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

zwh

Цитата: Python от октября 24, 2020, 12:02
Цитата: zwh от октября 24, 2020, 11:50
Цитата: Python от октября 24, 2020, 10:33
Где-то передали номер телефона как число (а не строку), которое, с точки зрения JS, после определенной величины всегда обрабатывается как float.
А JS вообще различает число и строку (если явно не определять тип или пробел в зад не совать)?
Различает, хотя и преобразовывает одно в другое неявным образом без лишних усложнений.

> "123456789012345678901234567890"
'123456789012345678901234567890'

> +"123456789012345678901234567890"
1.2345678901234568e+29

> 123456789012345678901234567890+''
'1.2345678901234568e+29'

ИМХО в последнем случае преобразование не очень логичное. Видимо, что-то подобное получилось и в приведенном примере с "Приватбанком".

Bhudh

Стал проверять в консоли и обнаружил, что Opera Dragonfly различает int и float с определённой величины. А хромовским инструментам пофиг.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

Цитата: zwh от октября 24, 2020, 12:29
ИМХО в последнем случае преобразование не очень логичное.
Логика в том, что число, записанное как целое, если оно больше максимального допустимого целого значения, рассматривается как float. Которое при таком значении отображается в экспоненциальном виде:
> 123456789012345678901234567890
1.2345678901234568e+29

Ну и дальше такая запись конвертируется в строку.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

zwh

Цитата: Python от октября 24, 2020, 13:12
Цитата: zwh от октября 24, 2020, 12:29
ИМХО в последнем случае преобразование не очень логичное.
Логика в том, что число, записанное как целое, если оно больше максимального допустимого целого значения, рассматривается как float. Которое при таком значении отображается в экспоненциальном виде:
> 123456789012345678901234567890
1.2345678901234568e+29

Ну и дальше такая запись конвертируется в строку.
Это-то как раз понятно. Непонятен последний случай, когда после конкатенации с пробелом число переделали во float, а потом преобразовали это в строку.

Python

Цитата: zwh от октября 24, 2020, 13:42
Цитата: Python от октября 24, 2020, 13:12
Цитата: zwh от октября 24, 2020, 12:29
ИМХО в последнем случае преобразование не очень логичное.
Логика в том, что число, записанное как целое, если оно больше максимального допустимого целого значения, рассматривается как float. Которое при таком значении отображается в экспоненциальном виде:
> 123456789012345678901234567890
1.2345678901234568e+29

Ну и дальше такая запись конвертируется в строку.
Это-то как раз понятно. Непонятен последний случай, когда после конкатенации с пробелом число переделали во float, а потом преобразовали это в строку.
Число переделали во float еще до конкатенации — на этапе трансляции кода.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Karakurt


zwh

Цитата: Python от октября 24, 2020, 14:03
Цитата: zwh от октября 24, 2020, 13:42
Цитата: Python от октября 24, 2020, 13:12
Цитата: zwh от октября 24, 2020, 12:29
ИМХО в последнем случае преобразование не очень логичное.
Логика в том, что число, записанное как целое, если оно больше максимального допустимого целого значения, рассматривается как float. Которое при таком значении отображается в экспоненциальном виде:
> 123456789012345678901234567890
1.2345678901234568e+29

Ну и дальше такая запись конвертируется в строку.
Это-то как раз понятно. Непонятен последний случай, когда после конкатенации с пробелом число переделали во float, а потом преобразовали это в строку.
Число переделали во float еще до конкатенации — на этапе трансляции кода.
А, т.е. как-то так надо было писать? --

если х=1234567890

document.writeln('"'+x+'" ')


Bhudh

Цитата: zwh от октября 24, 2020, 15:07А, т.е. как-то так надо было писать? --

если х=1234567890

document.writeln('"'+x+'" ')
А это как поможет?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

Цитата: zwh от октября 24, 2020, 15:07
А, т.е. как-то так надо было писать? --

если х=1234567890

document.writeln('"'+x+'" ')

Нет, если мы хотим, чтобы все цифры большого числа гарантированно оставались на месте, то его лучше изначально задавать не как число, а как строку:

x='1234567890'

document.writeln(x)
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

zwh

Цитата: Python от октября 24, 2020, 16:35
Цитата: zwh от октября 24, 2020, 15:07
А, т.е. как-то так надо было писать? --

если х=1234567890

document.writeln('"'+x+'" ')

Нет, если мы хотим, чтобы все цифры большого числа гарантированно оставались на месте, то его лучше изначально задавать не как число, а как строку:

x='1234567890'

document.writeln(x)

А если оно в переменной уже как число неизвестной величины, а хочется вывести так, чтобы все цифры показать, тогда как записать?

Python

Цитата: zwh от октября 24, 2020, 18:17
Цитата: Python от октября 24, 2020, 16:35
Цитата: zwh от октября 24, 2020, 15:07
А, т.е. как-то так надо было писать? --

если х=1234567890

document.writeln('"'+x+'" ')

Нет, если мы хотим, чтобы все цифры большого числа гарантированно оставались на месте, то его лучше изначально задавать не как число, а как строку:

x='1234567890'

document.writeln(x)

А если оно в переменной уже как число неизвестной величины, а хочется вывести так, чтобы все цифры показать, тогда как записать?
Правильный вопрос. Из того, что нагуглилось: можно использовать метод toFixed — впрочем, числа, если они float, хранятся в округленном виде, и если цифр достаточно много, то последние цифры могут замениться чем-то другим. Кроме того, с достаточно большими числами этот метод может и не работать (во всяком случае, в node так), а недостаточно большие и сами отображаются как целые (причем, toFixed и обычное преобразование в строку может давать разный результат).

> 1234567890123456789012
1.2345678901234568e+21

> 1234567890123456789012 .toFixed(0)
'1.2345678901234568e+21'

> 123456789012345678901 .toFixed(0)
'123456789012345683968'
> 123456789012345678901 .toFixed()
'123456789012345683968'

> 123456789012345678901
123456789012345680000
> 123456789012345678901+''
'123456789012345680000'
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

BormoGlott

Цитата: Python от октября 24, 2020, 18:44
> 1234567890123456789012
1.2345678901234568e+21

> 1234567890123456789012 .toFixed(0)
'1.2345678901234568e+21'

> 123456789012345678901 .toFixed(0)
'123456789012345683968'
> 123456789012345678901 .toFixed()
'123456789012345683968'

> 123456789012345678901
123456789012345680000
> 123456789012345678901+''
'123456789012345680000'
Юмор из жизни  :what:


zwh

Цитата: RockyRaccoon от октября 24, 2020, 20:14
Ага, ухохочешься.
Дак прикольно же, что любая циферка в нолик может превратиться -- просто магия какая-то!

Upliner

Цитата: Karakurt от октября 24, 2020, 15:10
JS must die
Ага. Хром уже поддерживает Dart в качестве замены. Там такие фокусы не пройдут.
Навамоўе ёсць ангсоц, ангсоц ёсць навамоўе!

Python

Цитата: zwh от октября 24, 2020, 20:55
Цитата: RockyRaccoon от октября 24, 2020, 20:14
Ага, ухохочешься.
Дак прикольно же, что любая циферка в нолик может превратиться -- просто магия какая-то!
Да, JS'у определенно не хватает безразмерных целых чисел, как в питоне и лиспе.
С другой стороны, зачем хранить номер телефона в виде числа, если какие-либо арифметические операции к нему все равно никогда не применяются? Разве что с целью сжатия в памяти, да и то выгода сомнительна (особенно если в номере есть начальные нули).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Bhudh

Цитата: Upliner от октября 24, 2020, 22:14Хром уже поддерживает Dart в качестве замены.
Ага, ещё бы браузер, который разрабатывает гугл, не поддерживал языка, который разрабатывает гугл...
Только как вспомнишь, сколько такого поддерживаемого гугл разрабатывал-разрабатывал, да и спустил в унитаз... Вместе со всеми трудами и контентом, предоставленным пользователями.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

А еще когда-то в ІЕ можно было использовать VBS вместо JS (интересно, в Эдже этот язык еще поддерживается?).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

zwh

Цитата: Python от октября 25, 2020, 02:28
Цитата: zwh от октября 24, 2020, 20:55
Цитата: RockyRaccoon от октября 24, 2020, 20:14
Ага, ухохочешься.
Дак прикольно же, что любая циферка в нолик может превратиться -- просто магия какая-то!
Да, JS'у определенно не хватает безразмерных целых чисел, как в питоне и лиспе.
С другой стороны, зачем хранить номер телефона в виде числа, если какие-либо арифметические операции к нему все равно никогда не применяются? Разве что с целью сжатия в памяти, да и то выгода сомнительна (особенно если в номере есть начальные нули).
А это может быть и не телефон, а какой-нить там инвентаризационный номер, для которого могут иметь смысл операции вроде "если три цифры со второй по пятую больше ХХХ, то ..."

Bhudh

Цитата: Python от октября 25, 2020, 03:40А еще когда-то в ІЕ можно было использовать VBS вместо JS
Если б только в IE...

Цитата: Центр справки и поддержки. СценарииОперационная система Windows ХР0 включает сервер сценариев Windows — не зависящий от языка сценариев сервер для 32-разрядных платформ Windows, включающих поддержку как сценариев Visual Basic Scripting Edition ((VBScript; файлы .vbs), так и сценариев и JScript (файлы .js). Сервер сценариев Windows может использоваться для запуска файлов сценария .vbs и .js непосредственно с рабочего стола или из командной строки, не вставляя их в документ HTML.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр