- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我重复了两次相同的计算,但在一次中我得到了浮点异常,而在另一次中却没有。
#include <iostream>
#include <cmath>
#include <fenv.h>
using namespace std;
int main(void)
{
feenableexcept(-1);
double x,y,z;
x = 1.0;
y = (1.0/(24.3*24.0*3600.0))*x;
cout << "y = " << y << endl;
z = x/(24.3*24.0*3600.0);
cout << "z = " << z << endl;
return 0;
}
我在 g++ 和 clang++ 上测试了它,并在两者上得到了以下输出
y = 4.76299e-07
Floating point exception
这是怎么回事?
最佳答案
那是 FE_INEXACT 异常。
这意味着 x
乘以编译时计算的常量 1/(24.3*24.0*3600.0)
不能在不损失精度的情况下转换为 double。
第一个操作不会引发此异常,因为 x
是 1.0,它具有精确的表示形式,并且常量已在编译时转换为某种(不精确的)double 表示形式。
由于浮点异常处理未标准化,这在其他编译器/平台上可能不会被注意到。
#include <iostream>
#include <cmath>
#include <fenv.h>
using namespace std;
int main(void)
{
feenableexcept(FE_INEXACT); // comment this line out and the exception is gone
double x,y,z;
x = 1.0;
y = (1.0/(24.3*24.0*3600.0))*x;
cout << "y = " << y << endl;
z = x/(24.3*24.0*3600.0); // <-- FE_INEXACT exception
cout << "z = " << z << endl;
return 0;
}
这个异常显然是默认禁用的,否则你根本无法进行任何浮点计算。
关于c++ - SIGFPE 恶作剧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21554646/
我有这个重写规则 RewriteEngine On RewriteBase /location/ RewriteRule ^(.+)/?$ index.php?franchise=$1 假设要更改此
我重复了两次相同的计算,但在一次中我得到了浮点异常,而在另一次中却没有。 #include #include #include using namespace std; int main(voi
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this qu
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我有一些代码使用迭代器遍历数组列表。如果满足某个条件,我想将一个对象添加到arraylist。这可以用迭代器完成吗?还是我只需要使用 l循环? itr=particleArr.iterator();
fiddle :http://jsfiddle.net/scottbeeson/TU6Zw/ HTML: Open Items Test1 Test2 Test3
我在使用 Loopers 和 Realm 时遇到了麻烦。 我有一个 Activity 在 onCreate() 中实例化它的 Presenter,然后调用它的公共(public)方法之一 initFi
我正在尝试对 API 进行身份验证,它只允许您使用 POST 和 JSON 作为表单数据进行身份验证,格式为 {"username":"myusername","password":"mypasswo
我尝试了以下代码以了解为什么我在 golang 中遇到 xml 问题。 据我了解,我应该能够编码一个结构,然后将结果数据解编回相同类型的结构? 我期望的结果是一个包含子片的父结构,而不是子片为零? p
这个问题在这里已经有了答案: Why do you use std::move when you have && in C++11? [duplicate] (4 个答案) 关闭 7 年前。 尝试运
Xcode、Cocoa touch 和一般 iOS 开发的新手。并且正在为他们的 iPhone 类(class)参加斯坦福演练。我在几个地方有点困惑,需要向你们提出我的疑问: 我为我的模型创建了两个类
我是一名优秀的程序员,十分优秀!