Как ограничить мое десятичное значение 2 местами в моем

#javascript #jquery #html-table #decimal

Вопрос:

Я делаю запрос к своей базе данных, чтобы вернуть значение двойной точности. Это значение в моей базе данных достигает 17 знаков после запятой, но я хочу отображать только 2 знака после запятой на веб-странице.

Это мой html-код с таблицей. Значение десятичной дроби переходит в {{savings_percent}}

  <table class="table text-light text-end">
                                        <thead>
                                            <tr>
                                                
                                                <th scope="col">CHW</th>
                                       
                                            </tr>
                                        </thead>
                                        <tbody class="text-end">
                                            <tr id="decimal">
                                                <th scope="row">%</th>
                                                {{#with chw}}
                                                <td class='rounded'>{{savings_percent}}</td>
                                                {{/with}}
                                            
                                        </tbody>
                                    </table>
 

Вот как я пытаюсь получить значение, преобразовать его в десятичное, а затем присвоить ему фиксированное число из двух десятичных знаков. Консоль выдает мне $(…).val(…).toFixed-это не функция.
У кого-нибудь есть решение о том, как я могу это исправить?

 let decimal = parseFloat($("#decimal .rounded").text())
    
    window.onload = () => {

        $('.rounded').val(decimal).toFixed(2)

        console.log(decimal)   
    };
 

Ответ №1:

Это должно быть

  $('#decimal').val(decimal.toFixed(2))
 

Звоните toFixed по номеру, а не по возвращаемому объекту jQuery .val() .

Комментарии:

1. val() предназначен только для элементов управления формами

Ответ №2:

val() предназначен только для элементов управления формами

Я бы использовал text(function) , который дает вам текущий текст, чтобы сделать то, что вам нужно, прежде чем возвращать изменения

 $('.rounded').text(function(i,curr){
    return parseFloat(curr).toFixed(2)
})
 

Комментарии:

1. Это сработало и для моего последнего вопроса. Спасибо!

Ответ №3:

Если вам не нужно использовать decimal в качестве числа где-то еще, нет необходимости преобразовывать его в число, а затем обратно в строку, просто чтобы обрезать ненужные цифры. Вы могли бы просто сделать:

 let decimal = $("#decimal .rounded").text().substring(0, $("#decimal .rounded").text().indexOf('.')   3);
 

или, чтобы сделать его более читабельным:

 let decimal = $("#decimal .rounded").text(); // retrieve the numeric string
let truncated = decimal.substring(0, decimal.indexOf('.')   3) // get the substring from the beginning to the second character after the '.' (included)
 

или вы можете использовать регулярное выражение:

 let decimal = $("#decimal .rounded").text().match(/d .d{2}/)[0]