Я не могу использовать parseInt для JSON данных из redis? - PullRequest
2 голосов
/ 14 января 2020

Так что у меня были проблемы с Redis. Я только недавно начал изучать, как его использовать, но в основном я знаю, как отправить JSON и получить JSON. Что все, что мне нужно. Теперь проблема в том, что когда я пытаюсь проанализировать данные json, я ничего не получаю. Это просто 0. Когда я использовал fs с файлом json. Мне даже не нужно было анализировать, но с redis я ничего не могу сделать с JSON, который я получаю. Поэтому я хочу спросить. Как я могу отправить данные, вызвать их, а затем превратить в числа, которые я могу использовать для расчетов. Я должен также упомянуть, что я попытался отправить значения int в ключах, но это также не сработало. Я оставлю некоторые фрагменты кода, которые я использовал для тестирования redis.

function logvalues() {
    redisClient.set("industrial", redisdatabase.industrial, (err) => {
        if (err) {
            console.log(err)
        } else {
            console.log(`New average values logged, industrial: ${redisdatabase.industrial}`);
        }
    });
    redisClient.set("milspec", JSON.stringify(redisdatabase), (err) => {
        if (err) {
            console.log(err)
        } else {
            console.log(`New average values logged, milspec: ${redisdatabase.milspec}`);
            redisClient.get("milspec", (err, reply) => {
                if (err) {
                    console.log(err)
                } else {
                    console.log(reply);
                    reply = JSON.parse(reply);
                    var milspecvalue = reply.milspec.valueOf();
                    console.log(milspecvalue)
                }
            });
        }
    });
}

также, вот несколько журналов:

2020-01-13T23:20:45.606166+00:00 app[web.1]: Average value = 0.09666666666666668
2020-01-13T23:20:45.607392+00:00 app[web.1]: New average values logged, industrial: 0.07
2020-01-13T23:20:45.607818+00:00 app[web.1]: New average values logged, milspec: 0.09666666666666668
2020-01-13T23:20:45.608896+00:00 app[web.1]: 0.09666666666666668
2020-01-13T23:20:45.608979+00:00 app[web.1]: No parse int: 0.096666666666666681
2020-01-13T23:20:45.609050+00:00 app[web.1]: ParseInt value: 0
2020-01-13T23:20:45.609102+00:00 app[web.1]: ParseInt + 1: 1

1 Ответ

3 голосов
/ 14 января 2020

Если вы используете parseInt, оно будет обрезать целое число без округления, поэтому оно по существу преобразуется в 0.

Для округления вы можете использовать Math.floor, Math.ceil или Math.round, округляя до ближайшего из них.

Если важна точность, вы можете использовать .toFixed метод по номерам. Пример:

(0.12311).toFixed(2) // yields "0.12"

Но он будет преобразован в строку. Поэтому, чтобы сохранить точность при работе с числами, используйте parseFloat. Пример:

parseFloat((0.12311).toFixed(2)) // 0.12, this time as a number you can operate on
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...