标签: floating-point

为什么小于1的最大IEEE浮点可表示数字与机器epsilon的一半相差?

我们可以将1.0表示为2 ^ 0 x 1.0,将小于1.0的最大可表示数表示为k,其中k = 2 ^ 0 x 0.111 ....... 1截断为拟合.

然后差值或ulp为1.0 - k = 2 ^ 0 x 0.00000 ..... 1.

与机器epsilon不同,我们有N epsilon = 2 ^ 0 x 1.000000 .... 1 - 2 ^ 0 x 1.000 = 2 ^ 0 x 0.000 ..... 1?

为什么正确的值是一半?

另外,如何计算除1.0以外的值的ulp?

floating-point numerical-methods

-5
推荐指数
1
解决办法
159
查看次数

当操作数小于129时,C++ float不会更改

在这里,我从浮点变量中减去128.0和129.0倍.

#include "stdafx.h"
#include<stdlib.h> //is this the problem? Or am i doing something wrong?
int main()
{

float d1=3.0e9;
printf("\n before: %f \n",d1);
for(int i=0;i<2000000;i++) d1=d1-128.0; //doesnt change!    
printf("\n after : %f \n",d1);
for(int i=0;i<2000000;i++) d1=d1-129.0; //does change!
printf("\n after2: %f \n",d1);

//is 129 is the minimum step for sub/add ? Isnt this wrong? 
//Is this about exponential part 10^9 ?
getchar();
return 0;
 }
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

问题:为什么这个浮点数不会因为小于129的操作数添加/ subbing而改变?因为我选择初始浮动值3.0e9?

当我选择初始值3.0e10时,初始化和两次减法都不起作用.

当我选择初始值3.0e8时,最小变化为17.所以16不会改变.:(

所以,谢谢你的回答.当初始值变小时,最小步长会根据精度变小.

VC++ 2010表达.windows xp 32位.奔腾-M

c++ floating-point

-6
推荐指数
3
解决办法
192
查看次数

如何使用单个char指针将float转换为字符串?

我有这样的问题:

char *ptr;
float f1 = 12.34;
Run Code Online (Sandbox Code Playgroud)

现在使用这个char*ptr,我想将这个float值转换为string,可以使用这个指针"ptr"在printf中显示.

表示:12.34 ==>"12.34"

我不需要使用任何其他指针或临时变量.我不能用snprintf.

c c++ floating-point pointers

-6
推荐指数
1
解决办法
189
查看次数

如何找到双倍数字?

假设我有一个输入1.251564.

如何找到"."输出后有多少元素,如下所示:

int  numFloating;

// code to go here that leads to
// numFloating == 6
Run Code Online (Sandbox Code Playgroud)

ps很抱歉没有提供任何代码,我只是不知道应该如何实现:(

谢谢你的回答!

c++ floating-point double

-6
推荐指数
1
解决办法
233
查看次数

Math-pow结果不正确

            double a1;
        a1 = Math.Pow(somehighnumber, 40);
        something.Text = Convert.ToString(xyz);
Run Code Online (Sandbox Code Playgroud)

我得到的结果是E + 41等,它像1,125123E + 41等我不明白为什么.

c# math floating-point

-8
推荐指数
2
解决办法
1123
查看次数

在C++中使用printf输出浮点数

我正在尝试输出一个浮点数

printf(theFloat);
Run Code Online (Sandbox Code Playgroud)

但是,这给了我以下错误。

““float”类型的参数与“const char *”类型的参数不兼容”

我不确定为什么这不起作用,我查看了一下,发现人们使用printf格式化浮点数...是否还有另一种用于浮点数等的打印方法?

c++ floating-point printf

-8
推荐指数
1
解决办法
3173
查看次数

为什么在VS2010中1.0f小于0.0f?

奇怪的浮点比较

如图所示,rotCount为1.0f.但是,当将rotCount与0.0f进行比较时,调试器会输入if语句,这不应该发生.

我使用Visual Studio 2010的默认调试模式,优化关闭.这是这段代码的拆卸. 在此输入图像描述

似乎在fcomp之后,没有生成测试和跳转汇编代码.这被认为是VS2010中的错误吗?谁知道为什么?

c++ floating-point assembly compare

-10
推荐指数
1
解决办法
554
查看次数

标签 统计

floating-point ×7

c++ ×5

assembly ×1

c ×1

c# ×1

compare ×1

double ×1

math ×1

numerical-methods ×1

pointers ×1

printf ×1