Questions tagged «floating-point»

浮点数是实数的近似值,可以表示比整数大的范围,但使用相同的内存量,但代价是精度较低。如果您的问题是关于较小的算术错误(例如,为什么0.2 + 0.1等于0.300000001?)或十进制转换错误,请在发布前阅读下面链接的“信息”页面。

21
用Java保持精度翻倍
public class doublePrecision { public static void main(String[] args) { double total = 0; total += 5.6; total += 5.8; System.out.println(total); } } 上面的代码打印: 11.399999999999 我如何才能仅打印(或将其用作)11.4?


2
gcc的快速数学实际上是做什么的?
我知道gcc的--ffast-math标志可以大大提高浮动操作的速度,并且超出了IEEE标准,但是我似乎无法找到有关启动时实际发生的情况的信息。谁能解释一些细节,或者给出一个清晰的例子,说明如果打开或关闭该标志会发生什么变化? 我确实尝试通过SO寻找类似问题,但找不到任何能解释快速数学原理的东西。



12
是否可以通过减去两个不相等的浮点数来获得0?
在下面的示例中是否可以除以0(或无穷大)? public double calculation(double a, double b) { if (a == b) { return 0; } else { return 2 / (a - b); } } 在正常情况下,当然不会。但是如果a和b非常接近,会由于计算精度而(a-b)导致结果0吗? 请注意,这个问题是针对Java的,但是我认为它将适用于大多数编程语言。

12
为什么C没有未签名的浮点数?
我知道,这个问题似乎很奇怪。程序员有时会想太多。请继续阅读... 在CI中使用signed和unsigned整数很多。我喜欢这样的事实,即编译器会在执行诸如将带符号的整数分配给无符号的变量之类的操作时警告我。如果将带符号整数与无符号整数进行比较,则会收到警告。 我喜欢这些警告。他们帮助我保持我的代码正确。 为什么我们没有同样的花车奢侈品?平方根绝对不会返回负数。在其他地方,负浮点值也没有意义。无符号浮动的完美候选人。 顺便说一句-我不太希望通过从浮点数中删除符号位来获得额外的精度。我对floats 非常满意,因为它们现在是。我只想有时将浮点数标记为无符号,并得到与整数相同的警告。 我不知道任何支持无符号浮点数的编程语言。 知道为什么它们不存在吗? 编辑: 我知道x87 FPU没有处理未签名浮点数的指令。让我们只使用签名的float指令。误用(例如,低于零)可以视为未定义行为,就像带符号整数的溢出未定义一样。

7
C#Float表达式:将结果float转换为int时的奇怪行为
我有以下简单代码: int speed1 = (int)(6.2f * 10); float tmp = 6.2f * 10; int speed2 = (int)tmp; speed1并且speed2应该具有相同的值,但实际上,我有: speed1 = 61 speed2 = 62 我知道我应该使用Math.Round而不是强制转换,但是我想了解为什么值不同。 我查看了生成的字节码,但是除了存储和加载之外,操作码是相同的。 我也在Java中尝试了相同的代码,并且正确获得了62和62。 有人可以解释吗? 编辑: 在实际代码中,它不是直接6.2f * 10,而是函数调用*常量。我有以下字节码: 为speed1: IL_01b3: ldloc.s V_8 IL_01b5: callvirt instance float32 myPackage.MyClass::getSpeed() IL_01ba: ldc.r4 10. IL_01bf: mul IL_01c0: conv.i4 IL_01c1: stloc.s …

10
如何使用HTML5输入类型编号处理浮点数和小数点分隔符
我正在构建主要用于移动浏览器的Web应用程序。我使用数字类型的输入字段,因此(大多数)移动浏览器仅调用数字键盘以提供更好的用户体验。此Web应用程序主要用于小数点分隔符是逗号而不是点的区域,因此我需要处理两个小数点分隔符。 如何用点和逗号覆盖整个混乱局面? 我的发现: 桌面版Chrome 输入类型=数字 用户在输入字段中输入“ 4,55” $("#my_input").val(); 返回“ 455” 我无法从输入中获取正确的值 桌面版Firefox 输入类型=数字 用户在输入字段中输入“ 4,55” $("#my_input").val(); 返回“ 4,55” 很好,我可以用点替换逗号并获得正确的浮点数 Android浏览器 输入类型=数字 用户在输入字段中输入“ 4,55” 输入失去焦点时,值将被截断为“ 4” 给用户造成困扰 Windows Phone 8 输入类型=数字 用户在输入字段中输入“ 4,55” $("#my_input").val(); 返回“ 4,55” 很好,我可以用点替换逗号并获得正确的浮点数 当用户可能使用逗号或点作为小数点分隔符并且我想将html输入类型保留为数字以提供更好的用户体验时,这种情况下的“最佳做法”是什么? 我可以将逗号转换为点播中的点,绑定键事件吗,它可以用于数字输入吗? 编辑 Currenlty我没有任何解决方案,如何从类型设置为数字的输入中获取浮点值(字符串或数字)。如果最终用户输入“ 4,55”,则Chrome始终返回“ 455”,Firefox返回“ 4,55”,可以。 同样令人烦恼的是,在Android(经过测试的4.2仿真器)中,当我输入“ 4,55”以输入字段并将焦点更改为其他位置时,输入的数字将被截断为“ 4”。


2
为什么Clang优化x * 1.0而不优化x + 0.0?
为什么Clang会优化这段代码中的循环 #include <time.h> #include <stdio.h> static size_t const N = 1 << 27; static double arr[N] = { /* initialize to zero */ }; int main() { clock_t const start = clock(); for (int i = 0; i < N; ++i) { arr[i] *= 1.0; } printf("%u ms\n", (unsigned)(clock() - …

19
round()似乎无法正确舍入
round()函数的文档指出,您向其传递了一个数字,并将小数点后的位置传递给四舍五入。因此,它应该这样做: n = 5.59 round(n, 1) # 5.6 但是,实际上,老的浮点怪异现象不断蔓延,您会得到: 5.5999999999999996 出于UI的目的,我需要显示5.6。我在Internet上闲逛,发现一些文档取决于我对Python的实现。不幸的是,这在我的Windows开发机和我尝试过的每台Linux服务器上都会发生。另请参阅此处。 除了创建自己的回合库之外,还有什么办法可以解决?


11
为什么不能将float值用作模板参数?
当我尝试float用作模板参数时,编译器会为该代码哭泣,而int效果很好。 是因为我不能float用作模板参数? #include<iostream> using namespace std; template <class T, T defaultValue> class GenericClass { private: T value; public: GenericClass() { value = defaultValue; } T returnVal() { return value; } }; int main() { GenericClass <int, 10> gcInteger; GenericClass < float, 4.6f> gcFlaot; cout << "\n sum of integer is …

8
PHP字符串浮动
我一点都不熟悉PHP,并且有一个简短的问题。 我有2个变量pricePerUnit和InvoicedUnits。这是将这些设置为值的代码: $InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits); $pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit); 如果输出,则得到正确的值。可以说5000发票单位和1.00价格。 现在,我需要显示花费的总额。当我将这两个数相乘时,它不起作用(按预期,它们是字符串)。 但是我不知道如何在PHP中解析/广播/转换变量。 我该怎么办?

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.