
我有一个应用程序,我绝对必须使用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上打印长双打时出现问题。 你可能不得不使用强制转换或滚动你自己的输出例程
总结以上是内存溢出为你收集整理的在窗口上使用长双打全部内容,希望文章能够帮你解决在窗口上使用长双打所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)