用java解期望和方差为啥方差输出结果是NAN

用通过网上查找java解期望和方差,为啥自己用电脑打出来的不一样,方差输出结果是NAN。程序也没有出现报错之类的问题

img

当你只输入了一个数的情况下,你的count是1,count -1 就成了0了,在方差计算的时候 除以 0 结果为无穷大,编程中用NAN表示

  • 这篇博客: 关于java中浮点数中Infinity和NaN的解释中的 引言 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 我们都知道计算机是用二进制表示数据,那浮点数计算机是怎么表示的那?

    1.0/0的结果是什么?为什么?
    0/0的结果是什么?为什么?
    0.0/0.0的结果是什么?为什么?

    先说结论:

    1)1.0/0的结果是什么?为什么?
        1.1 结果:Infinity
        1.2 原因:①1/0.1=10 ②1/0.01=100 ③1/0.001=1000,所以分子确定时,分母越小商越大,分母趋向于0时,商无穷大。对于java语言,手册中也有提到加减运算的第一步就是零值检测,如果涉及其中一个数是0,可以直接得出结果。


    2)0/0的结果是什么?为什么?
        2.1 结果:Exception / by zero
        2.2 原因:根据乘法与除法互为逆运算可证,一是零做除数不能得到固定的商;二是零做除数还不回原。因此说:“零做除数没有意义”或“规定零不能做除数”。1)中提到的java语言可适用


    3)0.0/0.0的结果是什么?为什么?
        3.1 结果:NaN
        3.2 原因:个人觉得还是java虚拟机自己搞的逻辑,目的就是用一个公式来模拟出这种Not a Number的值来,就像NaN转成Long统一翻译为0xff800001一样。底层应该是在零值检测时处理的。为什么这样说,因为(0.0f == 0)是true,那0.0/0是不是就等于0/0,那为什么会有两种结果。只有自己定义用来标示能解释通的吧。
     

  • 以下回答由chatgpt基于相关博客总结生成:

    关于期望和方差计算的问题,可能是因为代码中出现了除以0的情况,导致计算结果为NaN。可以检查代码中是否存在除以0的情况,或者检查计算过程中是否对数据进行了正确的清洗处理。

    关于Java中类和对象的问题,类代表一类事物的抽象,对象则是类的实例化,代表一个具体的个体。在代码实现中,可以通过定义不同的类和对应的对象,来分类表示不同的数据或实体,并进行对应的操作。具体可以通过定义类中的特征和方法来实现,然后通过实例化对象来进行调用和操作。特别需要注意的是,对象的比较应该使用equals方法,而不是简单的比较引用是否相等。