处理大于Long的整数时。MAX_VALUE为什么要在双精度上使用BigInteger对象?long的最大值为2^63-1,而double的最大值约为1.7*10^308。如果将double当作整数使用,而不是为数字创建一个完整的对象,岂不是更容易且使用更少的资源?
浮点数(floats,doubles)通过牺牲精度来获得范围。它们分别将一个值表示为指数部分和有效部分:
2^E * M
一个浮点数所能代表的离散值只有这么多,而且当您接近最大可能值时,它们之间的间距会变大。因此,大多数数字的误差都很小,随着数字越来越高,误差也越来越大。
举一个极端的例子,1000
1000000000000000019884624838656
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000如果你想计算东西,这是不好的 - 特别是当你发现 1e 30 10 = 1e 30
时!
这就是BigInteger的用武之地。它提供任意大的整数,没有舍入误差。
通常,计数时不要使用浮点值。浮点数之间的比较需要为舍入误差提供一定的空间,而整数之间的比较是完全精确的。
问题内容: 也许对编译器进行优化后并不重要,但是在C / C ++中,我看到大多数人以以下形式进行for循环: 使用postfix 完成增量操作。我得到了两种形式之间的区别。i 返回i的当前值,但是在安静时将1加到i。++ i首先将1加到i,然后返回新值(比i大1)。 我认为i 需要做更多的工作,因为除了下一个值外,还需要存储一个前一个值:推 (&i)进行堆栈(或加载至寄存器);递增(&i)。与
null 只使用数据类型有什么特别的缺点吗? 使用数据类型代替数据类型有意义吗?
问题内容: 我一直在阅读Go,并为这个基本问题感到困惑。 在Go中,很明显,切片更灵活,并且在需要一系列数据时通常可以代替数组使用。 阅读了大多数文档,他们似乎鼓励开发人员只使用切片而不是数组。我得到的印象是,创建者可以简单地将数组设计为可调整大小的,而无需整个切片部分即可完成。实际上,这样的设计会使该语言更易于理解,甚至鼓励使用更多惯用的代码。 那么,为什么创建者首先要允许数组呢?什么时候可以使
问题内容: 有人告诉我: 在x86-64下,FP算法是通过SSE完成的,因此long double是64位。 但是在x86-64 ABI中它表示: 参见:amd64-abi.pdf 和gcc说是16并给出= 和 所以我很困惑,64位怎么样?我认为这是一个80位的表示形式。 问题答案: 在x86-64下,FP算法是通过SSE完成的,因此long double是64位。 这就是 通常发生 X86-64
据我所知,例如,整数缓存了值为-128到127的实例。这是JLS的要求。JLS 5.1.7: 如果要装箱的值p是对布尔、字节、字符、短、int或长类型的常量表达式(§15.29)求值的结果,且结果为true、false、包含“\u0000”到“\u007f”范围内的字符,或包含-128到127范围内的整数,则a和b是p的任意两个装箱转换的结果。a==b的情况总是这样。 所以我能理解使用整数的意义。
问题内容: 我不确定为什么列出项目时为什么需要使用ul-li而不是简单地使用div。我可以使两者看起来完全一样,因此与创建div相比,创建无序列表的功能优势在哪里? 问题答案: 为了语义正确。HTML具有表达事物列表的功能,它可以帮助Google机器人,屏幕阅读器以及所有不仅仅关心网站外观的用户更好地了解您的内容。