微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在窗口上使用长双打

我有一个应用程序,我绝对必须使用long double数据types由于灾难性的截断错误,当做math双精度。 我的testing程序变得疯狂,因为在Windows上,使用Visual Studio的双倍长度只是双倍的别名,而在linux和OSX上,long double是真正的long double,名义精度为1e-19。

明(海湾合作委员会的窗口)是我困惑的地方。 Mingw声称LDBL_EPSILON的精确度是1e-19,但googleing表明mingw使用的c运行时实际上只是微软的c运行时间,不支持真正的长时间加倍。 任何人都可以在这里放光?

编辑 :问题的症结是这样的:在mingw,如果我打电话math函数log(long double x) ,这只是一个别名log(double x) ? 在这两种情况下,我怎么能写我自己的脚本来testing这种行为和/或testing呢?

让gcloud在Cygwin Windows中工作

如何在CheckedBoxList控件中的项目上绘制string?

如何在同一networking中的两台不同的机器上安装WPF应用程序

检查驱动器是否可以从C程序中移除? (Windows)

问题与杀死Windows资源pipe理器?

使得eyed3模块可以在python中导入

mingw32 Ruby安装程序的Windows

在Windows 7的任务栏上获取窗口列表?

在头文件中重载运算符是否可以(在声明类时)?

如果我的文件没有改变,如何防止在saltstack中运行module.run?

以下代码

#include <iostream> #include <cmath> int main(void) { long double y = 2.0L; std::cout << sizeof(y) << std::endl; long double q = sqrt(y); std::cout << q << std::endl; return 0; }

产出16 1.41421,迄今为止这么好

然后抛出预处理器(-E选项),发现内部,但不同于double sqrt()函数调用

using ::sqrt; inline constexpr float sqrt(float __x) { return __builtin_sqrtf(__x); } inline constexpr long double sqrt(long double __x) { return __builtin_sqrtl(__x); }

相同的日志(),罪(),你的名字

因此,我相信MinGW在算术和数学功能上都支持长双重格式,而这种支持是内置的,而不是基于libquadmath

刚试过MinGW(MinGW发行版nuwen,gcc / g ++ 4.9.1,64位)

以下程序

#include <iostream> int main(void) { double x = 1.0; long double y = 2.0L; std::cout << sizeof(x) << std::endl; std::cout << sizeof(y) << std::endl; }

产生了8个16

我猜想,long double是被支持的,与标准double不同,因此你的计算可能会产生所需的结果

我听说由于使用MS旧运行时,在Windows上打印长双打时出现问题。 你可能不得不使用强制转换或滚动你自己的输出例程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐