相关疑难解决方法(0)

有多少有效数字在java中有浮点数和双精度数?

浮点数是32个二进制数字,双数字是64个二进制数字吗?文档太难理解了.

所有位都转换为有效数字?或者小数点的位置是否占用了一些位?

java floating-point

77
推荐指数
4
解决办法
14万
查看次数

Constexpr数学函数

从这个页面中可以看出,c ++ 11中的数学函数似乎都没有使用constexpr,而我相信所有这些函数都可以.所以这给我留下两个问题,一个是他们为什么选择不使函数constexpr.对于像sqrt我这样的函数来说,两个人可能会编写我自己的constexpr,但是像sin或cos这样的东西会比较棘手,所以它就在那里.

c++ cmath constexpr c++11

56
推荐指数
3
解决办法
1万
查看次数

C++ 14变量模板:它们的目的是什么?任何用法示例?

C++ 14将允许创建模板化的变量.通常的例子是变量'pi',可以读取它以获得各种类型的数学常数π的值(3表示int;可能的最接近的值float等)

除此之外,我们可以通过将变量包装在模板化的结构或类中来实现此功能,这与类型转换如何混合?我看到一些重叠.

除了pi示例之外,它如何与非const变量一起使用?任何用法示例,以了解如何充分利用此类功能及其目的是什么?

c++ templates rationale c++14

52
推荐指数
5
解决办法
3万
查看次数

在头文件中使用constexpr

我可以在头文件中有这样的定义吗?

 constexpr double PI=3.14;
Run Code Online (Sandbox Code Playgroud)

在包含在几个cpp文件中的头文件中有这个问题吗?

我担心,因为它在标准中说这个constexpr有自己的内存,把它放在头文件中,并在几个cpp文件中添加标题,在内存中生成相同值的多个副本以及其他一些令人讨厌的问题.

我正在使用C++ 11

c++ constexpr c++11

20
推荐指数
3
解决办法
7609
查看次数

如何使用Bash命令计算pi

我正在学习bash脚本.在探索数学函数时,我遇到了一个计算pi值的命令.

seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -l
Run Code Online (Sandbox Code Playgroud)

虽然我理解基本的seq命令是如何工作的,但我无法理解上述命令是如何工作的.任何人都可以澄清它是如何工作的.

bash shell bc seq

14
推荐指数
3
解决办法
1万
查看次数

在C中,tan(30)给出了负值!为什么?

我观察到库中的tan(float)函数cmath返回负值.

以下代码,运行时:

    #include <cmath>
    ....

    // some calculation here gives me a value between 0.0 to 1.0.
    float tempSpeed = 0.5; 

    float tanValue = tan(tempSpeed * 60);

    __android_log_print(ANDROID_LOG_INFO, "Log Me", "speed: %f", tanValue);
Run Code Online (Sandbox Code Playgroud)

在我的日志文件中给我这个结果:

    Log Me: speed `-6.4053311966`
Run Code Online (Sandbox Code Playgroud)

就目前我所记得的

    tan(0.5*60) = tan(30) = 1/squareroot(3);
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我,因为我看到了负值吗?它与某些浮点大小错误有关吗?或者我做的事情真的很蠢?

c math android cmath android-ndk

13
推荐指数
2
解决办法
6069
查看次数

如何用C++计算Euler常数或Euler?

我试图找到在C/C++中使用数字e的更"自然"的方法.我专注于计算函数e ^ n.

我认为'cmath',默认情况下,不支持(函数和常量).但是,它可以包含编译器定义的常量,在本例中M_E.这可以通过包含声明来完成#define _USE_MATH_DEFINES.

另一方面,e可以定义为常数:

#define E 2.71828182845904523536;
Run Code Online (Sandbox Code Playgroud)

要么

const double EULER = 2.71828182845904523536;
Run Code Online (Sandbox Code Playgroud)

说这个.哪一个是接近这个数学常数的最"标准"方法?是其他图书馆吗?

c++ eulers-number

13
推荐指数
2
解决办法
2万
查看次数

什么是x86-64的长双?

有人告诉我:

在x86-64下,FP算法使用SSE完成,因此long double是64位.

但是在x86-64 ABI中它说:

    C type  | sizeof | alignment | AMD64 Architecture
long double |   16   |    16     | 80-bit extended (IEEE-754)
Run Code Online (Sandbox Code Playgroud)

见:amd64-abi.pdf

和gcc说sizeof(long double)是16并给出FLT_DBL= 1.79769e+308FLT_LDBL = 1.18973e+4932

所以我很困惑,long double64位是怎么回事?我认为这是一个80位的表示.

c linux floating-point x86-64 ieee-754

8
推荐指数
2
解决办法
6171
查看次数

浮点算术运算的精度是多少?

考虑下面两个非常简单的乘法:

double result1;
long double result2;
float var1=3.1;
float var2=6.789;
double var3=87.45;
double var4=234.987;

result1=var1*var2;
result2=var3*var4;
Run Code Online (Sandbox Code Playgroud)

默认情况下,乘法是否以高于操作数的精度完成?我的意思是,在第一次乘法的情况下,它是以双精度完成的,如果在x86架构中第二次,它是以80位扩展精度完成的,或者我们应该在表达式中将操作数转换为更高的精度,如下所示?

result1=(double)var1*(double)var2;
result2=(long double)var3*(long double)var4;
Run Code Online (Sandbox Code Playgroud)

其他操作(添加,除法和余数)怎么样?例如,当添加两个以上的正单精度值时,如果用于保存表达式的中间结果,则使用双精度的额外有效位可以减少舍入误差.

c++ floating-point arithmetic-expressions rounding floating-point-precision

7
推荐指数
2
解决办法
1124
查看次数

Constexpr编译错误使用std :: acos和clang ++而不是g ++

我想尝试将项目从gcc迁移到clang ++.我承认我的无知,我不知道为什么以下的代码

template <typename T>
constexpr T pi{std::acos(T(-1.0))};
Run Code Online (Sandbox Code Playgroud)

使用g ++静默编译但clang ++产生错误

trig.hpp:3:13: error: constexpr variable 'pi<float>' must be initialized by a constant expression
constexpr T pi{std::acos(T(-1.0))};
Run Code Online (Sandbox Code Playgroud)

而且我希望有人比我更了解它,可以启发我.

注意:尝试使用-std = C++ 14和C++ 1y.在clang版本3.6.2(标签/ RELEASE_362/final)下失败.适用于g ++(GCC)5.2.0.

c++ compiler-errors constexpr clang++ c++14

7
推荐指数
1
解决办法
1061
查看次数