当前位置: 首页 > 知识库问答 >
问题:

无法将字符串转换为浮点-不是数字(NaN)

宗政坚白
2023-03-14
I need to convert string to float to summarize all numbers and get the average.

I have tried Number(), parseFloat none of them are giving me the expected output.

例如,它不是返回2,而是返回“11”

我正在从该API收集数据:https://www.hatchways.io/api/assessment/students obs(为了检索数据,我创建了一个服务:export class StudentsService{

String="https://www.hatchways.io/api/assessment/students";

构造函数(私有http:HttpClient){}

//将observable强制转换为学生数组getAllStudents():observable

getAVG() {
for(let i = 0; i < this.students.length; i++) {
      //console.log('Estudante número: '+ i);
      for(let z = 0; z < 8; z++) {
        //console.log('Notas index: ' + z);
        this.grades[i] += Number(this.students[i].grades[z]);
        console.log('nota: '+ this.students[i].grades[z]);
      }
      var num = parseFloat(this.grades[0]);
      console.log('#######sum das notas######: ' + num);
    }
}

I need to sum all grades in the array to calculate the average and display it

共有2个答案

夹谷阳夏
2023-03-14

你必须初始化this.grades[i]=0 在开始第二个循环(带“z”的循环)之前。

for(let i = 0; i < this.students.length; i++) {
  //console.log('Estudante número: '+ i);

  this.grades[i]=0;

  for(let z = 0; z < 8; z++) {
    //console.log('Notas index: ' + z);
    this.grades[i] += Number(this.students[i].grades[z]);
    console.log('nota: '+ this.students[i].grades[z]);
  }
  var num = parseFloat(this.grades[0]);
  console.log('#######sum das notas######: ' + num);
}

}

郑锋
2023-03-14

您在正确的轨道上使用了parseFloat()parseInt()在这种情况下也可以工作),这只是正确使用它的问题。

基本上,您需要遍历student.grades数组中的每个成绩,并将其值添加到一个和中,稍后将除以成绩数。

像这样的

this.students.forEach(student =>
{
    let sum = 0;
    student.grades.forEach(grade=>sum+=parseFloat(grade))  //Goes through each grade, parses it as float and add it's result to sum
    let avg = sum/student.grades.length;
})

注意:我使用forEach迭代数组,但使用常规for循环也可以。这只是偏好的问题

还有其他方法可以获得sum/average(array.reduce就是其中之一),但只要解析字符串,一切都可以。

这里有一个你的场景的工作Stackblitz来说明。

如果你有任何问题,请告诉我

 类似资料:
  • 问题内容: 正如标题所说。我不认为有可能这样做,但如果可以告诉我。 这是我正在编写的bukkit(minecraft服务器)插件所必需的。我要执行一个命令:tnt [power]。电源是我想转换为浮点数的返回字符串。 谢谢 问题答案: 用于进行转换。 和之间的区别只是回报。如果需要(对象),请使用前者;如果要数字,请使用后者。

  • 问题内容: http://golang.org/pkg/strconv/ http://play.golang.org/p/4VNRgW8WoB 如何将浮点数转换为字符串格式?这是google游乐场,但未获得预期的输出。(2e + 07)我想得到“ 21312421.213123” 请帮助我从浮点数中获取字符串。谢谢 问题答案: 试试这个 如果只想获得尽可能高的位数精度,则特殊精度-1使用所需的最

  • 问题内容: 给出的是一个简单的CSV文件: 显然,实际数据集比这要复杂得多,但是这一数据再现了错误。我正在尝试为其构建一个随机森林分类器,如下所示: 但是当我调用fit()时,我只是得到了这个追溯: scikit-learn版本为0.16.1。 问题答案: 在使用fit之前,您必须进行一些编码。如前所述,fit()不接受字符串,但是您可以解决此问题。 有几种可以使用的类: LabelEncoder

  • ()中的ValueError回溯(最近一次调用)---- ~\Anaconda3\lib\site packages\sklearn\preprocessing\data.py in fit_transform(self,X,y)2017”““2018年返回所选的fit_transform(X,self.\u fit_transform- ~\Anaconda3\lib\site-包\skLear

  • 问题内容: 这是我正在查看的内容: 因此,我知道不能完全用二进制表示“ p” 1.15的十进制值。 因此,大的十进制大“ bdp”输出对我来说非常有意义……这是浮点数的实际值。 问题1 当浮点数“ p”转换回字符串以进行输出(如1.15)时,如何四舍五入(从内部1.149..375到1.15)? 在文档中的什么地方指定?toString javadoc并没有真正帮助(至少对我来说)。 我在语言规范

  • 我看到的是: 所以我知道“p”1.15的十进制值不能用二进制来精确表示。 所以大的十进制“bdp”输出对我来说非常有意义……这是浮点数的实际值。 问题 1 当浮点数“p”转换回字符串以进行输出(如 1.15)时,该舍入如何/在何处发生(从内部 1.149..375 值转换为 1.15)? 它在文档中的哪个位置指定?托斯特林爪哇并没有真正的帮助(至少我)。 我确实在语言规范中看到了这一点: 浮点和双