Exponare 5.6 zoom和pan不再适用于嵌入式浏览器(Exponare 5.6 zoom & pan no longer works in embedded browser)
以前我们的客户在Exponare 3.5上工作。 我们在嵌入式浏览器中没有任何问题缩放和平移。 但是在他们更新到Exponare 5.6之后,虽然地图正在工作精细缩放和平移更长的工作。 请任何想法。
Previously our clients work on Exponare 3.5. We didn't have any issue zoom & pan in embedded browser. But after they updating to Exponare 5.6 eventhough map is working fine zoom & pan longer works. Any ideas please.
原文:https://stackoverflow.com/questions/37581405
最满意答案
当精度如此重要时,我不会使用
float
。 我建议你看看decimal.Decimal
。 假设您将x_min
和x_max
更改为Decimal,则只需要删除第3行上的float
。这篇文章可能有助于解释不准确的来源:
I wouldn't use
float
when precision is so important. I suggest you look atdecimal.Decimal
. Assuming that you changex_min
andx_max
to Decimal, you only need to remove thatfloat
on line 3.This post might help explain where the inaccuracy is coming from:
相关问答
更多-
基数排序是一种线性排序算法。 它可以应用于floating point值。 看看这个: Radix Sort,排序浮点数据 基数排序浮动数据 Radix sort is a linear sorting algorithm. It can be applied to floating point values. Have a look at this : Radix Sort, Sorting a float data Radix sort floating data
-
当精度如此重要时,我不会使用float 。 我建议你看看decimal.Decimal 。 假设您将x_min和x_max更改为Decimal,则只需要删除第3行上的float 。 这篇文章可能有助于解释不准确的来源: I wouldn't use float when precision is so important. I suggest you look at decimal.Decimal. Assuming that you change x_min and x_max to Decimal, y ...
-
使用浮点数时避免不稳定的微小数字(Avoiding erratic tiny numbers when working with floating point numbers)[2022-07-20]
不要迭代浮点数。 问题是0.1不能用浮点精确表示。 所以相反,你应该这样做: for (int i = 0; i < N; i++) { float f = i * 0.1f; ... } Don't iterate over floating-point numbers. The problem is that 0.1 can't be exactly represented in floating-point. So instead, you should do something ... -
我有一种感觉,你想要的东西可能是通过灰色代码之类的东西。 如果你可以将你的值转换成灰色代码并使用某种能够纠正n位的校验和,你可以检测两个数组是否相同,除了n-1位错误,对吧? (每个误码位表示一个数字“一个一个”,其中映射将使得这是最低有效数字的变化)。 但确切的细节超出了我 - 特别是对于浮点值。 我不知道它是否有帮助,但灰色代码解决的是病态舍入的问题。 舍入听起来就像它会解决问题 - 一个天真的解决方案可能会循环,然后是校验和。 但简单的舍入总是有病态的情况 - 例如,如果我们使用floor,那么0.9 ...
-
一般来说,您希望尽可能保持数据的愚蠢。 行为和数据是应该分开的两个问题。 在我看来,最好的方法是根本没有单元课。 如果你必须拥有它们,那么除非必须始终以一种方式工作,否则应避免重载运算符。 通常它不会,即使你认为它。 正如评论中所提到的,它打破了严格的弱排序。 我相信处理它的理智方法是创建一些与其他任何东西无关的具体比较器。 struct RatioCompare { bool operator()(float lhs, float rhs) const; }; struct EpsilonCompa ...
-
我很确定这里发生的是后面的浮点变量被省略了,而保存在一个双精度寄存器中; 然后作为printf的参数传递。 然后编译器会相信在默认参数促销后以双精度传递此数字是安全的。 我设法使用GCC 7.2.0产生了类似的结果,使用这些开关: -Wall -Werror -ffast-math -m32 -funsafe-math-optimizations -fexcess-precision=fast -O3 输出是 x = 1028.254761 z = 1028.254800 这里的数字稍有不同^。 -fe ...
-
您可以计算(num - pow(2.0, exp - 47))和(num + pow(2.0, exp - 47)) ,将两者都转换为字符串并搜索范围之间的最小小数。 double的精确值是mantissa * pow(2.0, exp - 51) ,带有整数值mantissa ,因此如果你加/减pow(2.0, exp - 47)你将尾数改为2^4 ,这应该是准确的可以表示没有舍入错误(除非在尾部/溢出的情况下,即如果它是二进制<= pow(2,4)或>= pow(2, 53) - pow(2,4) 。你 ...
-
浮点数的精度(Precision of floating-point numbers)[2024-01-02]
从Python文档: 浮点数通常在C中使用double实现; sys.float_info中提供了有关运行程序的机器的浮点数的精度和内部表示的信息。 sys.float_info是一个结构序列,包含有关float类型的信息。 它包含有关精度和内部表示的低级信息。 import sys print(sys.float_info.mant_dig) mant_dig属性指向浮点精度:浮点数有效数中的基数 - 数字 几乎所有平台都将Python浮点数映射到IEEE 754双精度。 From Python do ... -
如果你想告诉gcc使用软件浮点库,那显然是一个开关,尽管在标准环境中可能不是交钥匙: 在x86 linux上使用软件浮点 实际上,这篇文章建议linux内核及其模块已经用-msoft-float编译: http://www.linuxsmiths.com/blog/?p=253 也就是说,@ PaulR的建议似乎是最明智的。 如果你提供一个API来完成你喜欢的任何转换,那么我不明白为什么它比其他任何东西都丑。 If you want to tell gcc to use a software floatin ...
-
你可以为任何double添加一个ulp (取决于double); 这是您可以添加或减去的最小数字,它将改变其值。 计算最后一个单位(ULP)的单位为双打 下一个更高/更低的IEEE双精度数 虽然,这些帖子都使用BitConverter 。 我发现了一篇文章,讨论了如何添加没有不安全代码或BitConverter的ulp,但是: http://realtimemadness.blogspot.com/2012/06/nextafter-in-c-without-allocations-of.html You ...