Questions tagged «numbers»

7
什么时候使用浮点数,什么时候使用双精度点
在我的编程经验中,我经常需要决定是否对实数使用float或double。有时我会选择浮动,有时我会选择双重,但这确实让我感觉更加主观。如果我要捍卫自己的决定,我可能不会给出合理的理由。 什么时候使用float和什么时候使用double?仅当存在内存限制时,您才总是使用double吗?或者,除非精度要求要求您使用double,否则您始终使用float?浮点数和双精度数之间关于基本算术的计算复杂度是否存在实质性差异?使用float或double的利弊是什么?你甚至用过长双吗?
194 c++  c  floating-point  numbers 

6
当大多数情况下建议使用双精度时,为什么浮点数仍是Java语言的一部分?
在我所见过的每个地方,它都说在几乎所有方面double都优于float。在Java中float已经过时了double,为什么仍要使用它呢? 我用Libgdx编写了很多程序,它们迫使您使用float(deltaTime等),但是在我看来double,就存储和内存而言,使用起来更容易。 我还读了什么时候使用float以及什么时候使用double,但是如果float真的只对小数点后有很多数字的数字有用,那为什么我们不能仅使用的多种变体之一double? 关于人们为什么仍然坚持使用浮点数,即使它实际上不再具有任何优势,是否有任何理由呢?改变这一切只是太多的工作吗?

11
从无限列表中获得100个最高数字
我的一位朋友被问到这个面试问题- “从一些无限的数字列表中不断涌入数字,您需要维护其中的数据结构以在任何给定的时间点返回前100个最高数字。假定所有数字都是整数。” 这很简单,您需要按降序排列已排序的列表,并跟踪该列表中的最低编号。如果获得的新号码大于该最低号码,则必须删除该最低号码,然后根据需要在排序列表中插入新号码。 然后问题扩大了- “您可以确保插入顺序为O(1)吗?可以吗?” 据我所知,即使您添加一个新数字到列表中并使用任何排序算法对其进行再次排序,对于quicksort(我认为),最好也应该是O(logn)。所以我的朋友告诉那是不可能的。但是他没有被说服,他要求维护任何其他数据结构而不是列表。 我想到了平衡二叉树,但即使在那儿,您也不会得到顺序为1的插入。因此,我现在也遇到了同样的问题。想知道是否有任何这样的数据结构可以针对上述问题以1的顺序进行插入,或者根本不可能。
53 numbers  big-o  puzzles 

3
为什么2 ^ 16是“特殊”数字?[关闭]
好的,我问这个问题很愚蠢-但在杰夫(Jeff)的文章中:正确设置采访电话屏幕,最初是在5个基本电话屏幕问题中指出的: 当您要求2 ^ 16是时,他们不应该茫然地盯着您。这是一个特殊的数字。他们应该知道。 我从事开发人员,软件工程师,代码猴子等工作已经有一段时间了,我认为我从未遇到过。我的意思是,我当然可以指望二进制值对其执行基本操作等,但是我看不到该值的“特殊之处”。
48 numbers  binary 


3
是否存在不能以10为基数但可以以2为基数的数字?
C#的decimal类型用于需要以10为底的精确表示的数字。例如,0.1不能以2为底(例如float和double)表示,并且在存储在这些类型的变量中时始终为近似值。 我想知道相反的事实是否还可能。是否存在以10为基数不能表示但可以以2为基数表示的数字(在这种情况下,我想使用a float代替a decimal来处理它们)?


4
Little Endian赢了吗?
最近在教大恩迪与小恩迪恩之战时,一个学生问它是否已经解决,我意识到我不知道。查看Wikipedia文章,似乎当前最流行的OS /体系结构对使用Little Endian,但是Internet协议指定Big Endian用于在数据包头中传输数值。这将是当前状态的一个很好的总结吗?当前的网卡或CPU是否为切换字节顺序提供硬件支持?

5
存储数字范围的最有效方法是什么?
这个问题是关于存储一个范围需要多少位的。换一种说法,对于给定的位数,可以存储的最大范围是多少?如何存储? 假设我们要存储一个介于0-255之间的子范围。 例如45-74。 我们可以将上面的示例存储为两个无符号字节,但是让我感到震惊的是,那里必须有一些信息冗余。我们知道第二个值大于第一个值,因此在第一个值大的情况下,第二个值需要较少的位,在第二个值大的情况下,第一个需要较少的位。 我怀疑任何压缩技术都会产生少量结果,因此最好提出一个问题:“一个字节可以存储的最大范围是多少?”。此值应大于通过分别存储两个数字可获得的值。 有没有执行这种操作的标准算法?

6
为什么计算机不将小数存储为第二个整数?
当分母不是2 ^ x的解时,计算机很难存储分数。这是因为小数点后的第一个数字为1/2,第二个为1/4(或1 /(2 ^ 1)和1 /(2 ^ 2))等。 当计算机将数字的小数部分存储为另一个整数(因此是准确的)时,为什么要处理各种舍入错误? 我唯一想到的就是处理重复的小数(以10为基数),但是可能有一个边缘解决方案(就像我们目前使用无穷大)。

6
随机数生成器如何工作?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我只是在考虑php rand()函数,并思考如何重新制作它,于是我完全呆呆了。 随机数生成器如何工作?
23 random  numbers 

3
如何在单元测试中正确比较双精度值是否相等?
我最近设计了一个时间序列模块,我的时间序列本质上是一个SortedDictionnary<DateTime, double>。 现在,我想创建单元测试,以确保该模块始终正常工作并产生预期的结果。 常见的操作是计算时间序列中各点之间的性能。 所以我要做的是创建一个带有{1.0,2.0,4.0}的时间序列(在某些日期),我希望结果是{100%,100%}。 关键是,如果我手动创建具有值{1.0,1.0}的时间序列,并检查是否相等(通过比较每个点),则测试将无法通过,因为使用实数的二进制表示时将始终存在错误数字。 因此,我决定创建以下功能: private static bool isCloseEnough(double expected, double actual, double tolerance=0.002) { return squaredDifference(expected, actual) < Math.Pow(tolerance,2); } 是否有另一种处理此类案件的常用方法?

7
为什么Java具有不同大小数字的原语?
在Java中有原始类型byte,short,int并long和同样的事情float和double。为什么必须要由一个人来设置原始值应使用多少个字节?是否只能根据传入的数字大小来动态确定大小? 我能想到的原因有两个: 动态设置数据大小将意味着它也需要能够动态更改。这可能会导致性能问题吗? 也许程序员不希望某人能够使用比特定大小更大的数字,并且这使他们受到限制。 我仍然认为通过使用单个int和float类型进行简单操作可能会获得很多收益,是否有特定的原因导致Java决定不走这条路?

4
如何识别不稳定的浮点计算?
在数字中,能够识别不稳定的方案并提高其稳定性非常重要。如何识别不稳定的浮点计算? 我正在做一个非常复杂的仿真,其中许多数值方案一起工作,我正在寻找一种方法来识别其薄弱部分。我正在研究涉及微分方程的物理模型。整个过程的鸟瞰图是: (初步步骤)收集物理观测P。 确定模拟的初始参数。这使用了一种优化算法,在该算法中,我们进入参数空间并查找参数C,以使某些误差函数E(F(C),P)降至最小,其中F为参数的某些导出量。 将C插入仿真引擎。这是EDP的Euler方案,因此,在每个时间步上,我们都会计算驱动动态项(每个项都是一个复杂的函数,可能会受到不稳定性的影响),并向Euler方案提供这些动态项以计算下一个州。这持续了数千个时间点。 在模拟结束时,我们计算最终状态S的某些函数Proof(S),并将其与从观察到的数量推导出的一些Require(P)进行比较。这不是结果的正式证明,更多是真实性检查。 此外,我看到了一个复杂的操作塔(在Euler方案中,在Proof中,动态项的计算)。并希望识别并修复“不良零件”。 我推测使用精度降低的浮点数的软件实现会放大数值方案的不稳定性,从而简化了不同实现之间的比较。这是调查这个问题的常用技术吗?是否可以使用虚拟机(例如Bochs)来实现此目的而无需更改程序? 为了适当地处理稳定性问题,有时可以将数值过程的典型输入作为目标,因此可以对其进行调整以使其在该输入上效果很好,而在其他有效但不太可能的输入上效果可能不太好。给定典型输入的样本,就有可能窥探一些中间结果并为它们准备统计数据。同样,这是研究稳定性问题的常用技术吗?虚拟机对此有用吗?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.