当将浮点数与整数相比较时,某些值对需要比其他类似的值更长的时间才能被评估。 例如: >>> import timeit >>> timeit.timeit("562949953420000.7 < 562949953421000") # run 1 million times 0.5387085462592742 但是,如果浮点数或整数大于或等于一定值,则比较运行速度要快得多: >>> timeit.timeit("562949953420000.7 < 562949953422000") # integer increased by 1000 0.1481498428446173 >>> timeit.timeit("562949953423001.8 < 562949953421000") # float increased by 3001.1 0.1459577925548956 更改比较运算符(例如,使用==或> )不会以明显的方式影响时间。 这并不仅仅与数量有关,因为select更大或更小的值可能会导致更快的比较,所以我怀疑是不幸的,这些比特排列起来。 显然,比较这些值对于大多数用例而言足够快。 我只是好奇,为什么Python似乎与其他一些值的斗争更多的价值。
为什么更改总和顺序会返回不同的结果? 23.53 + 5.88 + 17.64 = 47.05 23.53 + 17.64 + 5.88 = 47.050000000000004 Java和JavaScript都返回相同的结果。 我明白了,由于浮点数是用二进制表示的,所以有些有理数( 比如1/3 – 0.333333 … )不能精确表示。 为什么简单地改变元素的顺序会影响结果呢?
众所周知,NaNs在算术中传播,但我找不到任何示范,所以我写了一个小testing: #include <limits> #include <cstdio> int main(int argc, char* argv[]) { float qNaN = std::numeric_limits<float>::quiet_NaN(); float neg = -qNaN; float sub1 = 6.0f – qNaN; float sub2 = qNaN – 6.0f; float sub3 = qNaN – qNaN; float add1 = 6.0f + qNaN; float add2 = qNaN + qNaN; float div1 = 6.0f / qNaN; […]
我不断看到这个常量popup在各种graphics头文件 0.0039215689 这似乎与颜色有关吗? 这是Google的第一个热门游戏 : void RDP_G_SETFOGCOLOR(void) { Gfx.FogColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f; Gfx.FogColor.G = _SHIFTR(w1, 16, 8) * 0.0039215689f; Gfx.FogColor.B = _SHIFTR(w1, 8, 8) * 0.0039215689f; Gfx.FogColor.A = _SHIFTR(w1, 0, 8) * 0.0039215689f; } void RDP_G_SETBLENDCOLOR(void) { Gfx.BlendColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f; Gfx.BlendColor.G = _SHIFTR(w1, 16, 8) * 0.0039215689f; Gfx.BlendColor.B […]
我正试图从一个数据网格中parsing两个值。 这些字段是数字,当他们有一个逗号(例如554,20),我不能得到逗号后面的数字。 我试过parseInt和parseFloat 。 我该怎么做?
我知道,这个问题似乎很奇怪。 程序员有时会想太多。 请继续阅读… 在CI中使用有符号和无符号整数很多。 我喜欢这样一个事实,即编译器会警告我,如果将某个有符号整数赋值给一个无符号variables。 我收到警告,如果我比较签名与无符号整数和更多。 我喜欢这些警告。 他们帮助我保持我的代码正确。 为什么我们没有同样的花车奢侈品? 平方根绝对不会返回负数。 还有其他的地方,负浮动值没有意义。 完美的候选人一个无符号的浮点数。 顺便说一句 – 我不是真的热衷于我可以通过从浮标移除符号标志获得一个额外的精度。 我现在对float很满意。 我只想把浮点数标记为unsigned,得到与整数相同的警告。 我不知道任何支持无符号浮点数的编程语言。 任何想法,为什么他们不存在? 编辑:我知道x87 FPU有没有处理未签名的浮动指令。 让我们只使用签署的浮动指令。 误用(例如,低于零)可能被认为是未定义的行为,就像未定义有符号整数的溢出一样。
我如何将十进制数(浮点数)四舍五入到最接近的整数? 例如 1.2 = 1 1.7 = 2
这是我在最近的一次采访中被问及的一个问题,我想知道(我实际上并不记得数值分析的理论,所以请帮助我:) 如果我们有一些函数,它会累加浮点数: std::accumulate(v.begin(), v.end(), 0.0); v是一个std::vector<float> ,例如。 在积累这些数字之前sorting这些数字会更好吗? 哪个命令会给出最准确的答案? 我怀疑,按升序排列数字实际上会使数字错误更less ,但不幸的是我无法certificate自己。 PS我意识到这可能与现实世界的编程无关,只是好奇。
有时,Activerecord数据types会让我困惑。 呃,经常。 我的一个永恒的问题是,对于一个特定的情况, 我应该使用:decimal还是:float ? 我经常遇到这个链接, ActiveRecord :: decimal与:float? ,但答案还不够清楚,我可以肯定: 我已经看到许multithreading,人们build议从不使用浮动,并始终使用十进制。 我也看到一些人build议只使用float来进行科学应用。 以下是一些示例: 地理位置/经度/纬度: 120.5777777 ,… 比率/百分比: 1.4143 ,… 我曾经使用过:decimal ,但是我发现处理Ruby中的BigDecimal对象与浮点数相比是不必要的尴尬。 我也知道我可以使用:integer来表示货币/美分,但是它并不适合其他情况,例如当精度可能随时间变化的数量。 使用每个的优点/缺点是什么? 要知道使用哪种types,有什么好的经验法则?
我遇到了一个问题,通过在MySQL数据库模式中引入浮点列,浮点值的比较总是不会返回正确的结果。 1 – 50.12 2 – 34.57 3 – 12.75 4 – …(全部小于12.00) SELECT COUNT(*) FROM `users` WHERE `points` > "12.75" 这返回我“3”。 我读过,MySQL中浮点值的比较是一个坏主意,小数types是更好的select。 我有没有希望继续浮动types,并获得比较正常工作?