|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2014
Сообщений: 17
|
Приведение Number в String без потерь
Есть такой код
var num:Number = 0.940544481142550815427045414574; var str:String = String(num); trace(str); num.toString() работает точно также. Мне это категорически не подходит. Как мне преобразовать Number в String, чтобы в итоге получилась строка: '0.940544481142550815427045414574' ? |
|
|||||
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
А что выдаёт trace(num)?
|
|
|||||
Регистрация: Apr 2014
Сообщений: 17
|
Блин, вроде и понимал, что может возникнуть у кого-то такой вопрос, но почему-то не стал заранее говорить, что мне категорически нужна именно строка(мне её нужно хешировать). И да, trace(num) выводит число целиком, ни больше ни меньше, ровно то, что находится в num. Ну и добавлю, на всякий случай: напрямую создавать строку тоже не могу, нужно именно преобразовывать из Number.
Добавлено через 7 часов 39 минут Решение нашел в таком виде. Правильность хеширования можно проверить в интернете. Для моей задачи подходит, вот и хорошо. Хотя тут же на ум приходит более "изящное" решение, которое впрочем выкладывать незачем. public class Main extends Sprite { private var num1:Number = 0.0000000000000000; private var num2:Number = 00000000000001; public function Main() { init(); } private function init():void { var str1:String = String(num1); var str2:String = String(num2); trace(str1+str2 + ' ' + SHA224.hash(str1+str2)); /*Хэш раунда: 96908a81bb4f80d71925f40c05d741c8e0849dddb500c135fd46d885cd8de8b2 Число раунда: 0.940544481142550815427045414574*/ } } |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Цитата:
|
|
|||||
Регистрация: Apr 2014
Сообщений: 17
|
В результате вычислений вообще никакое число не получается, потому что вычисления мне выводят строку с данным числом, в чем и заключалась задача. Или я неправильно понял вопрос.
|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
бр, так требовалось же Number в String перегнать.Если это и так стринг, не совсем понятно в чем, собственно, проблема.
Последний раз редактировалось undefined; 12.11.2017 в 16:18. |
|
|||||
Регистрация: Apr 2014
Сообщений: 17
|
Видимо все-таки я вопрос неправильно понял. Изначально да, у нас Number. В том решении которое я привел, у нас этот Number разбивается на две половинки, т.е. две переменные Number, которые по отдельности успешно преобразовываются в String, а потом просто конкатенируются в один String, который мне и нужен.
Добавлено через 4 минуты А, понял теперь изначальный вопрос. Суть глобальной задачи в том, что мне нужно создать огромную базу данных со всеми хэшами строковых чисел от 0.000000000000000000000000000000 до 0.999999999999999999999999999999 Число 0.940544481142550815427045414574 я взял как для примера, который в самом начале мне не удавалось преобразовать в строку. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
ну вот я и спрашиваю этот изначальный number в результате каких-то вычислений получается?Уж очень много в нем значащих цифр.
Цитата:
выдает 0.9405444811425508 ни больше, ни меньше.Animate 2017 |
|
|||||
Регистрация: Apr 2014
Сообщений: 17
|
Цитата:
Ну а так получается, что внутренняя реализация функции trace() применяет .toString() ко всем не строковым входным параметрам. А именно .toString() и обрезает число. IntellijIDEA 14 |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
скорее обрезание еще на этапе присвоения происходит т.к. число знаков выше машинной точности
|
Часовой пояс GMT +4, время: 09:37. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|