在窗口上使用长双打

在窗口上使用长双打,第1张

概述在窗口上使用长双打

我有一个应用程序,我绝对必须使用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上打印长双打时出现问题。 你可能不得不使用强制转换或滚动你自己的输出例程

总结

以上是内存溢出为你收集整理的在窗口上使用长双打全部内容,希望文章能够帮你解决在窗口上使用长双打所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1250015.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存