-
1852 votes16 answers760 views
.NET中的decimal,float和double之间的区别?
.NET中的 decimal , float 和 double 有什么区别? 什么时候会有人使用其中一种? -
101 votes17 answers1345 views
Python中的round()似乎没有正确舍入
round()函数的文档声明您将数字传递给它,并将小数点后的位置传递给圆形 . 因此它应该这样做: n = 5.59 round(n, 1) # 5.6 但是,实际上,良好的旧浮点怪异爬进来,你会得到: 5.5999999999999996 出于UI的目的,我需要显示 5.6 . 我在互联网上搜索并发现一些documentation这取决于我对Python的实现 . 不幸的是,这发生在我的W... -
4 votes1 answers49 views
如何在SMT-LIB标准中表示浮点常数(例如1e307)?
目前我正在对Z3进行一些实验,我不知道在SMT中表示浮点常量字面值(例如1e307): (declare-const a Real) (assert (= a 1e+307)) (check-sat) FPA理论也出现了同样的问题: (declare-const a (_ FloatingPoint 11 53)) (assert (= a 1e+307)) (check-sat) 所有这些S... -
220 votes13 answers828 views
对于IEEE754 NaN值,所有比较返回false的理由是什么?
为什么NaN值的比较与所有其他值的行为不同?也就是说,与运算符==,<=,> =,<,>的所有比较(其中一个或两个值为NaN)返回false,这与所有其他值的行为相反 . 我想这可以通过某种方式简化数值计算,但我找不到明确说明的理由,即使在Kahan的Lecture Notes on the Status of IEEE 754中也没有详细讨论其他设计决策 . 这种异常行为... -
117 votes2 answers1320 views
gcc的ffast-math实际上做了什么?
我理解gcc的 --ffast-math 标志可以大大提高浮动操作的速度,并超出IEEE标准,但我可以't seem to find information on what is really happening when it'开启 . 任何人都可以解释一些细节,并可能给出一个明确的例子,说明如果标志开启或关闭会有什么变化? 我确实尝试过挖掘S.O.对于类似的问题,但找不到任何解释ffast-m... -
0 votes3 answers1742 views
当我从csv文件的特定列读取字符串并尝试将其解析为浮点数时,为什么Python会抛出错误?
我使用以下python代码从csv文件中读取数字: with open('file.csv') as p: rows = csv.reader(p) for row in rows: numbers = float(row[3]) 我知道虽然csv文件包含数字,但它们被读作字符串 . 最初我只是将字符串解析为float,但在这种情况下,当我尝试这样做时,Py... -
47 votes8 answers881 views
numpy float:比算术运算中的内置慢10倍?
我为以下代码得到了非常奇怪的时间: import numpy as np s = 0 for i in range(10000000): s += np.float64(1) # replace with np.float32 and built-in float 内置浮点数:4.9秒 float64:10.5 s float32:45.0 s 为什么 float64 比... -
230 votes4 answers43 views
为什么这些数字不相等?
以下代码显然是错误的 . 有什么问题? i <- 0.1 i <- i + 0.05 i ## [1] 0.15 if(i==0.15) cat("i equals 0.15") else cat("i does not equal 0.15") ## i does not equal 0.15 -
1 votes4 answers1724 views
cin:检查number是一个整数还是float,即使float值是1.000
在以下方式使用std :: cin >> number时: float number; while(std::cin >> number) { //perform a check here if possible //if number does not contain a decimal point do this for(int i = 0;... -
233 votes7 answers1718 views
JavaScript将float显示为2位小数
我想显示一个2位小数的数字 . 我以为我可以在JavaScript中使用 toPrecision(2) . 但是,如果数字是 0.05 ,我会得到 0.0500 . 我宁愿保持不变 . 在JSbin上看到它 . 做这个的最好方式是什么? 我可以考虑编写一些解决方案,但我想(我希望)内置这样的东西? -
-2 votes1 answers508 views
如果输入低于0.0或高于1.0,则返回0.0和1.0 [关闭]
如果输入值介于(0.0,1.0)之间,目标是“做某事” . 除此以外, 如果输入> = 1.0或,则 返回1.0如果输入<= 0.0, 返回0.0 直截了当的方式是: def func(x): if x >= 1.0: return 1.0 elif x <= 0.0: return 0.0 else: ... -
4 votes2 answers608 views
使用百分比和BigDecimal进行测试
我有两个BigDecimals Actual和Budgeted . 我将实际按预算划分为百分比 . 我遇到的问题是,当我构建一些单元测试时,我试图确认生成的BigDecimal是.1但是当尝试等于(new BigDecimal(.1))时,由于双精度问题而失败 . 我想要克服这个问题的方法是创建两个BigDecimals - 十个和一个,将这两个分开并用它来测试 . 这样,我只使用定点数,我的计... -
201 votes10 answers1275 views
将Float格式化为n个小数位
我需要将float格式化为“n”个小数位 . 正在尝试BigDecimal,但返回值不正确... public static float Redondear(float pNumero, int pCantidadDecimales) { // the function is call with the values Redondear(625.3f, 2) BigDecimal ... -
264 votes20 answers1895 views
为什么十进制数不能用二进制表示?
关于浮点表示,已经向SO发布了几个问题 . 例如,十进制数0.1没有精确的二进制表示,因此使用==运算符将其与另一个浮点数进行比较是危险的 . 我理解浮点表示的原理 . 我不明白的是,从数学的角度来看,为什么小数点右边的数字比左边的数字更“特殊”? 例如,数字61.0具有精确的二进制表示,因为任何数字的整数部分始终是精确的 . 但数字6.10并不准确 . 我所做的就是将小数点移动一个地方,然后我突... -
8 votes4 answers1322 views
IEEE-754浮点数如何工作
假设我有这个: float i = 1.5 在二进制文件中,此float表示为: 0 01111111 10000000000000000000000 我打破了二进制代表'signed','exponent'和'fraction'块 . 我不明白的是这代表1.5 . 一旦减去偏差(127-127),指数为0,隐含前导的部分为1.1 . 1.1如何缩小= 1.5 ??? -
40 votes3 answers244 views
什么是浮点数的“偏差值”?
在学习如何在计算机中表示浮点数时,我遇到了“偏见值”一词,我不太明白 . 浮点数中的偏差值与浮点数的指数部分的负和正有关 . 浮点数的偏差值为127,这意味着127总是被添加到浮点数的指数部分 . 这样做有助于确定指数是负数还是正数? -
2 votes1 answers683 views
浮点表示中不同范围可表示的最大值数是多少?
我试图弄清楚使用浮点值的规范化表示的一些细节 . 据我所知,IEEE-754表示的工作方式如下: 1.{significand} * 2^{exponent} 对于单精度,有效数为24位,指数为8位 . 我试图将其分解为基本上是指数支持的每个数字范围内可用的“插槽”数量,例如: [Exponent=0] 0.0 - 1.0 : 2^23 values [Exponent=1] 1.0 - 2.0... -
2 votes2 answers1038 views
IEEE双精度中最小的次正规数
在用于双精度系统的IEEE标准中,我们知道正常数的最小指数是1-1023 = -1022,而0的表示是(1.00 ... 0)_2 * 2 ^(0-1023),指数是-1023 . 次正规数具有指数-1022,而与正常数字相反,前导尾数为0.也就是说,次正规数的表示如下:(0.b,...,c)_2 * 2 ^( - 1022),其中b,...,c是一系列二进制值(即0或1) . 我想知道以下表示是... -
1 votes1 answers1310 views
无法将浮点转换为二进制表示
以下是我想要遵循的教程 . 当试图将数字转换回其二进制表示时,我弄错了 . 有人能告诉我我做错了什么吗? -0.21875 二进制表示: .00111 = 1.11 * 2^-3 以来.. 0.5^3 + 0.5^4 + 0.5^5 = 0.21875 指数为... -3 + 127 = 124 因此二进制表示应该是: s eeeeeeee mmmmmmmmmmmmmm 1 011111... -
1 votes1 answers1218 views
什么是浮点溢出和下溢
我觉得我并不真正理解 overflow 和 underflow 的概念 . 我'm asking this question to clarify this. I need to understand it at its most basic level with bits. Let'使用 1 字节的简化浮点表示 - 1 位符号, 3 位指数和 4 位尾数: 0 000 0000 我们可以存... -
3 votes2 answers1671 views
浮点数如何存储在CPU内?
我是初学者并经历了大会基础知识 . 现在,在阅读此事时,我来到了这一段 . 它解释了浮点数如何存储在内存中 . float的指数是一个8位字段 . 为了允许存储大数字或小数字,指数被解释为正数或负数 . 实际指数是8位字段的值减去127. 127是32位浮点数的“指数偏差” . 浮子的分数字段有一个小小的惊喜 . 由于0.0被定义为所有位设置为0,因此无需担心将0.0表示为等于127的指数字段,... -
231 votes4 answers853 views
为什么这些数字不相等?
以下代码显然是错误的 . 有什么问题? i <- 0.1 i <- i + 0.05 i ## [1] 0.15 if(i==0.15) cat("i equals 0.15") else cat("i does not equal 0.15") ## i does not equal 0.15 -
6 votes3 answers828 views
为什么signbit(-0)返回0?
来自Open Group Base Specifications Issue 7,IEEE Std 1003.1-2008: 当且仅当其参数值的符号为负时,signbit()宏才返回非零值 . 为什么 signbit(-0) 返回 0 ?我只想了解这一决定背后的逻辑 . -
0 votes0 answers451 views
以旧的二进制格式解码数字
有一个软件(http://www.ambulatory-monitoring.com/downloads/Action4_1_16_setup.zip)存储(可能的几个)系列数据,我需要解密这种格式 . 版权从1988年开始,所以我怀疑这可能会使用一些旧的基于x86的格式或方法 . 所以我开始制作一个单点系列,我设置了不同的值并检查软件将存储在文件中的内容 . 它类似于浮点存储但不完全相同,例如,... -
286 votes3 answers764 views
如何获得浮点范围之间的随机数?
randrange(start, stop) 只接受整数参数 . 那么我如何在两个浮点值之间得到一个随机数? -
381 votes13 answers408 views
如何在javascript中格式化浮点数?
在JavaScript中,当从float转换为字符串时,如何在小数点后只获得2位数?例如,0.34而不是0.3445434 . -
425 votes22 answers1319 views
如何很好地将浮动数字格式化为字符串而没有不必要的小数0?
64位双精度可以精确地表示整数/ - 253 鉴于这一事实,我选择将double类型用作所有类型的单一类型,因为我的最大整数是无符号32位 . 但现在我必须打印这些伪整数,但问题是它们也与实际双打混合在一起 . 那么如何在Java中很好地打印这些双打? 我已经尝试了 String.format("%f", value) ,这很接近,除了我得到很多小值的尾随零 . 这是 %f... -
459 votes30 answers1504 views
如何处理JavaScript中的浮点数精度?
我有以下虚拟测试脚本: function test(){ var x = 0.1 * 0.2; document.write(x); } test(); 这将打印结果 0.020000000000000004 ,而它应该只打印 0.02 (如果您使用计算器) . 据我所知,这是由于浮点乘法精度的误差 . 有没有人有一个很好的解决方案,以便在这种情况下我得到正确的结果 0.02 ?... -
568 votes26 answers1092 views
格式编号始终显示2位小数
我想格式化我的数字,以便始终显示2位小数,在适用的地方进行舍入 . 例子: number display ------ ------- 1 1.00 1.341 1.34 1.345 1.35 我一直在用这个: parseFloat(num).toFixed(2); 但它显示 1 为 1 ,而不是 1.00 . -
537 votes5 answers760 views
为什么Math.round(0.49999999999999994)会返回1?
在以下程序中,您可以看到每个稍微小于 .5 的值都向下舍入,但 0.5 除外 . for (int i = 10; i >= 0; i--) { long l = Double.doubleToLongBits(i + 0.5); double x; do { x = Double.longBitsToDouble(l); System...