Оооооооооооооооооооооооооооооооооооооооооооооооооооооооооо «Ваш расчет ИМТ неверен»

Я работаю над технической оценкой калькулятора ИМТ, но я застрял на стадии использования формулы. Инструкции по вычислению ИМТ следующие:

Instruction 1:

Each user's height is expressed in feet, so the calculation needs to first convert it to meters. HINT: multiple height by 0.3048.

Instruction 2:

BMEye calculates BMI with an advanced algorithm! BMEye has the notion of countries with the healthiest diet and they are Chad, Sierra Leone, Mali, Gambia, Uganda, Ghana, Senegal, Somalia, Ivory Coast, and Isreal . If the user is from any of these countries, then the calculated BMI figure is multipled by 0.82, bringing it down a little.

Last instruction:

Following the guide and hints above, get computeBMI to use the user's weight, height, and country to calculate and return the BMI value for the user.

Что я пытался сделать:

Я попытался запустить код в своем возвышенном тексте локального редактора, и он правильно вычисляет ИМТ, но когда я ввожу код в трекер оценок Google, который является платформой для оценки, он выдает ошибку: «Ваш расчет ИМТ неверен!»

Кто-нибудь может помочь мне найти исправление с этой ошибкой? Ниже приведена функция, которая получает объект пользователя, захватывая рост, вес и страну, чтобы помочь в вычислениях.

const computeBMI = ({weight, height, country}) => {
           const LowBMIcountries = ["Chad", "Sierra Leone", "Mali", "Gambia", 
            "Uganda", "Ghana", "Senegal", "Somalia", "Ivory Coast", "Israel"];  
              const bmiRate = 0.82;

               let ConvertHeight = height * 0.3048;

               let BMI = weight / Math.pow(ConvertHeight,2);

                if (LowBMIcountries.includes(country)) {
                  BMI *= bmiRate;
                 }
               return Math.round(BMI, 2);

            };

В какой единице находится weight? Фунты или килограммы? И какова фактическая формула для ИМТ?

VLAZ 04.06.2019 13:26

@mplungjan Этот вопрос на 100% в порядке.

Avin Kavish 04.06.2019 13:28

Да, я думаю, что ему не хватает ожидаемого результата. Можем ли мы просто попросить ОП добавить некоторую информацию. Ваше редактирование неверно. Его функция принимает один объект с аргументами. Ваши звонки передают 3 параметра

Avin Kavish 04.06.2019 13:32

Кроме того, вы внесли эти изменения, даже не зная единиц, используемых в этом расчете, нам нужен ОП, чтобы предоставить более подробную информацию.

Avin Kavish 04.06.2019 13:42

@VLAZ, вес в килограммах, а рост в футах, которые перед расчетами следует преобразовать в метры, формула - вес / рост ^ 2

Emmanuel 04.06.2019 13:42
"Рост каждого пользователя выражается в футах"height:165 эти великаны ;)
Thomas 04.06.2019 13:42

@Emmanuel, ПОЖАЛУЙСТА, 1. Нажмите редактировать. 2. Щелкните редактор сниппетов [<>]. 3 Добавьте код ТОЧНО так, как вы его запускаете, с любыми изменениями, которые вы добавили, например, .toFixed. Также, пожалуйста, переместите массив LowBMIcountries за пределы функции - и правильно напишите Израиль.

mplungjan 04.06.2019 13:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
355
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

В вопросе не упоминается округление, не говоря уже о том, что ваше использование Math.round неверно. Math.round принимает один аргумент и округляет до ближайшего целого числа. Если вам нужны две десятичные точки, используйте toFixed(2).

Хороший момент — в инструкциях не сказано, какое число возвращать, но Math.round будет возвращать только целые числа.

VLAZ 04.06.2019 13:27
Когда я вношу код в трекер оценок Google, который является платформой для оценки, он выдает ошибку, говорящую о том, что ваши расчеты GMI неверны!.
mplungjan 04.06.2019 13:44

@mplungjan это потому, что вы внесли неправильные правки в исходный код, опубликованный OP.

Avin Kavish 04.06.2019 13:44

@mplungjan, но... предлагаемое изменение работает. Мы просто не знаем, как выглядит проверка — может потребоваться три значащих цифры. Хотя исходный код предлагает это 2. Детали вопроса не уточняются.

VLAZ 04.06.2019 13:46

@VLAZ да, я отметил его. Он вносит неправильные правки, вызывающие ошибки во время выполнения, даже не зная синтаксиса и выдвигая ложные обвинения. Эммануэль, Если возникнут дополнительные проблемы, дайте мне знать, и я помогу вам.

Avin Kavish 04.06.2019 13:50

@mplungjan ранее в вашем комментарии говорилось, что .toFixed производит NaN.

VLAZ 04.06.2019 13:50

Я пытался использовать return BMI.toFixed(2);, но ошибка сохраняется, не повезло

Emmanuel 04.06.2019 13:51

Каков ожидаемый результат и какой результат вы получите?

Avin Kavish 04.06.2019 13:51

Что происходит, когда вы просто возвращаетесь BMI? Где написано, что нужно округлять?

Avin Kavish 04.06.2019 13:54

Случайная мысль — возможно, функция должна вернуть количество, поэтому Number(BNI.toFixed(2)) может быть правильным выводом. Угадывая здесь - я не знаю, что такое ожидание...

VLAZ 04.06.2019 13:56

@AvinKavish, для height : 6 и weight : 68,country: Mali я получаю вывод как BMI: 16.67, что верно, но система все еще выдает эту ошибку: Оооооооооооооооооооооооооооооооооооооооооооооооооооооооооо Ваш расчет ИМТ неверен. Ознакомьтесь с инструкциями и продолжите

Emmanuel 04.06.2019 13:58

Вы пробовали предложение @VLAZ преобразовать вывод обратно в число, Number(BMI.toFixed(2))? toFixed(2) преобразуется в строку. Вы также делаете Math.round(BMI * 100)/100, чтобы округлить до 2 знаков после запятой без разбора строки.

Avin Kavish 04.06.2019 13:59

Так что я совершенно расстроен тем, что делать дальше.

Emmanuel 04.06.2019 14:01

Это работает return Number(BMI.toFixed(2)); так же, как return BMI.toFixed(2);, но ошибка не исправлена.

Emmanuel 04.06.2019 14:03

Я сделал это перед тем, как написать сюда.

Emmanuel 04.06.2019 14:07

[ссылка] (freecodecamp.org/forum/t/…) , в этой ветке нет ответа, когда вы переходите по ссылке.

Emmanuel 04.06.2019 14:09
Ответ принят как подходящий

Через пару дней я нашел правильный ответ на этот сложный вопрос, я знаю, что это будет полезно для других в будущем.

const computeBMI = ({weight, height, country}) => {

const countries = ["Chad", "Sierra Leone", "Mali", "Gambia", "Uganda",              
          "Ghana", "Senegal", "Somalia", "Ivory Coast", "Isreal"];

          const hm = height * 0.3048;
          const ratio = (countries.includes(country) ? 0.82 : 1);

      const BMI = (weight / (hm * hm)) * ratio;
          return parseFloat(BMI).toFixed(1);

           }; 

изучите ниже..

entervar computeBMI = function({weight,height,country}) {



    const bmiScale = 0.82;
    let feetToMeter = 0.3048;


     const countries = ['Chad','Sierra Leone','Mali','Gambia','Uganda',
              'Ghana','Senegal','Somalia','Ivory Coast','Isreal'];
   const heightinmeter = (height * feetToMeter);

    let bim = ((weight)/(heightinmeter ** 2));


    if (countries.includes(country)) {bim = bim * bmiScale}

    var fixednum = bim.toFixed(1);

    return fixednum;


  } 

Другие вопросы по теме