我需要一个变量a = 6700000^2 * (a - b) (2 + sinf(a)+ s inf(b))
,其中a
和b
是-7到7之间的浮点数。我需要浮点数可以给我的所有精度。
a
应该是哪种数据类型? sinf
是否能够从a
和b
中获得最佳精确度? a
和b
应该是弧度还是度数?
当我发布表达式时,我犯了一个错误,正确的表达式是c = 67000000 ^ 2 *(ab)(2 + sinf(a)+ sinf(b)),我的问题是c。“a”而且“b”是花车,它们作为花车传递给我,它们实际上是坐标(纬度和经度),所以这不是我关心的......我担心的是当他们使用sinf时我会失去任何精确度吗?哪个类型应该是这样我不会失去精度因为我使用一个长双变量d来存储多个不同c变量的总和,并且d返回给我为零,它不应该(可能是关于1或2)因此我在计算c包时失去了一些精确度...我使用c作为双重...可能是因为我在计算c时会失去一些精度吗?
非常感谢你的帮助。
答案 0 :(得分:3)
我无法告诉你float
对你的申请是否足够好。如果您需要更高的精确度,请使用double
,然后使用sin()
代替sinf()
。
标准触发功能以弧度为单位,您会发现是否阅读了relevant documentation。
答案 1 :(得分:1)
如果您不想担心内存问题,则应使用float
而不是double
。请务必将sinf()
更改为sin()
并使用弧度。
答案 2 :(得分:0)
如果您想要在不滚动自己类型的情况下获得最佳精确度,则应使用double
而不是float
。在这种情况下,您只需使用sin(3)
即可。根据{{3}},您应该以弧度传递参数。