Показать сообщение отдельно
  #4 (permalink)  
Старый 05.01.2022, 14:54
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 138

Цитата:
let text = "..." // Текст содержащий много строк
let lines = text.split('\n') // Массив каждый элемент - отдельная строка
Распарсить получилось, но вот преобразовать опять не выходит. Я думала, что получив отдельное число я смогу преобразовать экспоненциальную запись, а вместо этого когда я делаю преобразование, то выводятся изначальные данные из документа.

Содержание документа Object.txt
Цитата:
2.12151364375213E+0001
-4.65241027215574E-0001
1.24533965323114E+0001
2.21470432354003E+0001
-1.35650478231506E+0001
5.17833965543514E+0001
2.52214176162443E+0001
-1.15183292003216E+0001
3.76599590303214E+0001
2.57543176121343E+0001
-1.12383293127446E+0001
Вот пример:
//Функция для преобразования
    function toFixed(x) {
      if (Math.abs(x) < 1.0) {
        var e = parseInt(x.toString().split('e-')[1]);
        if (e) {
            x *= Math.pow(10,e-1);
            x = '0.' + (new Array(e)).join('0') + x.toString().substring(2);
        }
      } else {
        var e = parseInt(x.toString().split('+')[1]);
        if (e > 20) {
            e -= 20;
            x /= Math.pow(10,e);
            x += (new Array(e+1)).join('0');
        }
      }
      return x;
    }
    
  
    
    function LoadFromFile(FileName){
      var req = new XMLHttpRequest();
      var data = "1";
      req.open("GET", FileName);
     
      req.onreadystatechange = function() {
        
        if(req.readyState===4){
         
          if(req.status===200){
            
            let text = req.responseText // Текст содержащий много строк
            let lines = text.split('\n') // Массив каждый элемент - отдельная строка
            let num;
            for(var i = 0; i < lines.length; i++)
            {
                num = toFixed(lines[i]);
                console.log(num);
            }

          }
        }
      }
      try
      {
         req.send(null);
      }
      catch (e)
      {
         alert(e.message);
      }
      
    }


Функция toFixed работает, если взять любое число из документа и добавить в toFixed, то выведится число со сдвигом запятой. Например, если прописать вот так.
num = toFixed(2.12151364375213E+0001);
console.log(num);

Мы получим: 21.2151364375213
Если через цикл ничего не происходит.
for(var i = 0; i < lines.length; i++)
            {
                num = toFixed(lines[i]);
                console.log(num);
            }

Возвращается, то же самое что и в документе.
Цитата:
2.12151364375213E+0001
-4.65241027215574E-0001
1.24533965323114E+0001
2.21470432354003E+0001
-1.35650478231506E+0001
5.17833965543514E+0001
2.52214176162443E+0001
-1.15183292003216E+0001
3.76599590303214E+0001
2.57543176121343E+0001
-1.12383293127446E+0001

Последний раз редактировалось Katy93, 05.01.2022 в 14:56.
Ответить с цитированием