java – 为什么0.0f / 0.0f不会产生任何运行时错误?
发布时间:2020-12-14 23:21:49 所属栏目:Java 来源:网络整理
导读:最近我测试了以下程序我期待运行时错误,但它显示“nan”作为输出.为什么怎么样?我正在使用g编译器. #include iostreamint main(){ float f=0.0f/0.0f; std::coutf; return 0;} 同样地,我也尝试过类似的Java和Java程序. C#它再次显示“nan”作为输出. class
最近我测试了以下程序&我期待运行时错误,但它显示“nan”作为输出.为什么&怎么样?我正在使用g编译器.
#include <iostream> int main() { float f=0.0f/0.0f; std::cout<<f; return 0; } 同样地,我也尝试过类似的Java和Java程序. C#&它再次显示“nan”作为输出. class Test { public static void main(String args[]) { float f=0.0f/0.0f; System.out.println(f); } } class Test { public static void Main(string[] args) { float f=0.0f/0.0f; Console.Write(f); } } 我想知道如何实现浮点运算&它是如何与整数运算区别的.在C的情况下是不确定的行为?如果是,为什么? 解决方法
nan代表的不是数字.除以整数0总是一个错误,因为在数学中你不能除以0.因此,当除以整数0时,许多语言都会抛出异常.
使用浮点数进行此操作是不太合理的,因为浮点计算并不精确.例如,计算可能导致0.0f,因为0.0f是答案的最接近的浮点值,而不是因为答案的真值在数学上为0.因此,尝试除以浮点值0.0f可能不是算法不正确的后果. nan本质上意味着无法确定计算的答案,因为它涉及两个数字的划分,因此计算机无法将它们与0区分开来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |