本文介绍了为什么要使用浮点数超过双倍,或双倍长双倍?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我仍然是编程的初学者,我总是有更多的问题比我们的书或互联网搜索可以回答(除非我错过了一些东西)。所以我提前道歉,如果这是答案,但我找不到。



我明白,浮点数比双倍更小的范围,使其不太精确,从什么我明白,长双倍更精确(?)。所以我的问题是为什么要使用一个不太精确的变量呢?它与不同平台,不同的操作系统版本,不同的编译器有关吗?或者在编程中有特定的时刻,它在战略上更有利于在双倍/长双双上使用浮点数?



感谢大家!

解决方案

在几乎所有处理器中,较小的浮点数执行相同或更少的时钟周期。有时,差异不是很大(或没有),其他时候它可以字面上是 double float



当然,影响缓存使用的内存脚印也将成为一个因素。 float 的一半大小 double ,而 long double 还比较大



编辑:尺寸更小的另一个副作用是处理器的SIMD扩展(3DNow!,SSE,x86中的AVX和类似的扩展在其他几种架构中可用)可能只能使用 float ,或者可以占用 float double (据我所知,在任何处理器中,没有SIMD指令可用于 long double )。因此,如果使用 float double ,则可以通过一次处理两倍的数据来提高性能。结束编辑。



所以,假设6-7位数的精度足以满足您的需要,范围为+/- 10 is sufficient, then float should be used. If you need either more digits in the number, or a bigger range, move to double, and if that's not good enough, use long double. But for most things, double should be perfectly adequate.

Obviously, the importance of using "the right size" becomes more important when you have either lots of calculations, or lots of data to work with - if there are 5 variables, and you just use each a couple of times in a program that does a million other things, who cares? If you are doing fluid dynamics calculations for how well a Formula 1 car is doing at 200 mph, then you probably have several tens of million datapoints to calculate, and every data point needs to be calculated dozens of times per second of the cars travel, then using up just a few clockcycles extra in each calculation will make the whole simulation take noticeably longer.

这篇关于为什么要使用浮点数超过双倍,或双倍长双倍?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-15 07:48