Tag: 浮点数

printf和co如何区分float和double

由于它没有强types,我认为它只是select了正确的内存大小,并根据参数的types来解释它。 但是float和double都使用%f,而且它们是不同的大小。 PS我可以看到如何通过将值复制到临时和铸造(是这样吗?)可能工作,但它是如何工作的scanfs / sscanf?

如何将string转换为浮动?

#include<stdio.h> #include<string.h> int main() { char s[100] ="4.0800" ; printf("float value : %4.8f\n" ,(float) atoll(s)); return 0; } 我预计输出应该是:40.8万,而我只有4.00000000 有没有办法让点后的数字

Python中的epsilon值

Python中的epsilon有没有标准的值(或者说获得方法)? 我需要比较浮点值,并想比较最小的差异。 在C ++中有一个函数提供了numeric_limits::epsilon( ) ,它给出了任何给定数据types的epsilon值。 Python中是否有相当的东西?

代表任何双重值所需的字符的最大长度是多less?

当我将无符号的8位整数转换为string时,我知道结果总是最多3个字符(对于255),对于有符号的8位整数,我们需要4个字符,例如“-128”。 现在我真正想知道的是浮点值是一样的。 什么是string表示任何“双”或“浮点”值所需的字符的最大数量是多less? 假设一个常规的C / C ++ double(IEEE 754)和正常的十进制扩展(即没有%e printf格式)。 我甚至不确定是否真的很小的数字(即0.234234)会比真正的巨大数字(双精度代表整数)长?

将一个浮点数整数到java中的下一个整数值

我怎么能四舍五入浮点数到Java中的下一个整数值? 假设 2.1 – > 3 3.001 – > 4 4.5 – > 5 7.9 – > 8

什么是空序列的算术平均值?

免责声明:不,我没有find任何明显的答案,违背了我的预期! 当寻找代码示例Wrt。 算术平均值,我可以通过Googlefind的前几个例子似乎被定义为空序列产生0.0的平均值。 (例如, 在这里和这里 …) 然而,看维基百科, 算术平均值是这样定义的,即一个空序列将产生0.0 / 0 – A = 1/n ∑[i=1 -> n](a[i]) – 所以,一般情况下可能是NaN 。 所以如果我写一个效用函数来计算一组浮点值的算术平均值,那么我应该在一般情况下: 为空序列返回0. . 为空序列返回(Q)NaN ? 在空序列的情况下“抛出exception”?

Math.pow根据Java版本产生不同的结果

我在JDK版本1.7.0_60上运行以下代码: System.out.println(Math.pow(1.5476348320352065, (0.3333333333333333))); 其结果是:1.1567055833133086 我在JDK版本1.7.0上运行完全相同的代码。 其结果是:1.1567055833133089 我明白,double不是无限精确的,但是java规范中的变化是否会导致差异? PS:因为我们使用遗留系统,大十进制不是一个选项。 编辑:我能够追踪更改的时间:它是在JDK版本1.7.0_40中引入的(与版本1.7.0_25相比)。

何时使用浮动

多年以前,我学会了用浮动的精度问题,所以我不再使用它们。 然而,我仍然遇到代码使用浮动,这让我畏惧,因为我知道一些计算将是不准确的。 那么,什么时候适合使用浮动? 编辑:作为信息,我不认为我已经遇到了一个程序,其中一个数字的准确性并不重要。 但是我会对听到的例子感兴趣。

使用pow(x,2)而不是x * x有什么优势?

使用这个代码有什么好处吗? double x; double square = pow(x,2); 而不是这个? double x; double square = x*x; 我更喜欢x * x,并看着我的实现(微软)我发现在pow没有优势,因为x * x比pow更简单的scheme。 有什么特别的情况下pow是优越的?

双倍乘以100,然后投给长是给错误的价值

我有以下代码: Double i=17.31; long j=(long) (i*100); System.out.println(j); O / P: 1730 //Expected:1731 Double i=17.33; long j=(long) (i*100); System.out.println(j); O / P: 1732 //Expected:1733 Double i=17.32; long j=(long) (i*100); System.out.println(j); O / P: 1732 //Expected:1732{As expected} Double i=15.33; long j=(long) (i*100); System.out.println(j); O / P: 1533 //Expected:1533{as Expected} 我曾试图Google,但无法find原因。如果问题微不足道,我很抱歉。