Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   ява-скрипт округление чисел после запятой (https://javascript.ru/forum/dom-window/54839-yava-skript-okruglenie-chisel-posle-zapyatojj.html)

_Eldar_ 03.04.2015 08:48

Цитата:

Сообщение от Ruslan_xDD
Aetae, не-а, на всей странице же. Если бы автор привёл нормальный пример

автор привел нормальный пример 1.36363636364<br><table>..., как быть с такими двумя числами? результат обработки первого числа ведь будет 0 ну или лучше ближайшая цифра -0.000005, и второе число совсем не длинное - но все равно обрабатывается.
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
    $(function() {
    $("*").contents().filter(function() {
        return 3 == this.nodeType
    }).each(function() {
        var a = this.data;
        this.data =  a.replace(/\d+\.\d{4,12}/g, function(a) {
            return (+a).toFixed(3)
        })
    })
});
  </script>
</head>
<body>
-0.000005155102<br>5.5<br><table><tr><td>Число</td><td>56.039026226151</td><td>3.364353456415</td><td >56.818181818182</td></tr></table>
</body>
</html>

рони 03.04.2015 09:02

_Eldar_,
а сам что-нибудь? вот вам дока http://javascript.ru/RegExp ваша задача сделать так чтоб 5.5 скрипт даже не пытался преобразовать, взамен получите ноль )))

_Eldar_ 03.04.2015 09:09

Цитата:

Сообщение от рони (Сообщение 364760)
_Eldar_,
а сам что-нибудь? вот вам дока http://javascript.ru/RegExp ваша задача сделать так чтоб 5.5 скрипт даже не пытался преобразовать, взамен получите ноль )))

вроде сделал, а можно взамен -0.000005 ?

рони 03.04.2015 09:12

_Eldar_, малоли думать не захочется, внизу общее решение, но в нём нет того решения что требуется от вас в 12 посте, оно за вами.
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
    $(function() {
    $("*").contents().filter(function() {
        return 3 == this.nodeType
    }).each(function() {
        var a = this.data;
        this.data =  a.replace(/-?\d+\.\d+/g, function(a) {
            return +(+a).toFixed(3)
        })
    })
});
  </script>
</head>
<body>  <table  id="msgFlash"><tr><td>Число</td><td>129.36363636364</td><td>3.3643534564</td><td >56.818181818182</td></tr></table>
всякая фигня -123.456789


-0.00000515<br>5.5
</body>
</html>

рони 03.04.2015 09:31

Цитата:

Сообщение от _Eldar_
можно взамен -0.000005

можно - покажите ваше решение

_Eldar_ 03.04.2015 09:54

Цитата:

Сообщение от рони
можно - покажите ваше решение

отредактировал выше

рони 03.04.2015 10:50

Цитата:

Сообщение от _Eldar_
отредактировал выше

ok! :)
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
    $(function() {
    $("*").contents().filter(function() {
        return 3 == this.nodeType
    }).each(function() {
        var a = this.data;
        this.data =  a.replace(/-?\d+\.\d+/g, function(a) {
            var len = a.match(/\.0+/);
            len = len && len[0].length > 3 ? len[0].length : 3;
            return +(+a).toFixed(len)
        })
    })
});
  </script>
</head>
<body>  <table  id="msgFlash"><tr><td>Число</td><td>129.36363636364</td><td>3.3643534564</td><td >56.818181818182</td></tr></table>
всякая фигня -123.456789
   0.00589

-0.000005155102<br>5.5
</body>
</html>


Часовой пояс GMT +3, время: 22:57.