相关疑难解决方法(0)

在Objective-C/C中的数字/浮点数后面的"f"

我在Apple文档中找不到这个:这里的数字后面的"f"表示什么?这是来自C还是Objective-C?不将它添加到常数中有什么区别吗?

CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f);
Run Code Online (Sandbox Code Playgroud)

你能解释一下为什么我不会写:

CGRect frame = CGRectMake(0, 0, 320, 50);
Run Code Online (Sandbox Code Playgroud)

c floating-point objective-c

100
推荐指数
6
解决办法
6万
查看次数

"f"在浮动值上的后缀?

我想知道C中这两个变量之间的区别是什么:

float price = 3.00;
Run Code Online (Sandbox Code Playgroud)

float price = 3.00f;
Run Code Online (Sandbox Code Playgroud)

尾随"f"?

c floating-point

68
推荐指数
4
解决办法
5万
查看次数

60
推荐指数
6
解决办法
5724
查看次数

我们通常应该使用浮点文字来表示浮点数而不是更简单的双重文字吗?

在C++中(或者只有我们的编译器VC8和VC10) 3.14是双字面文并且3.14f是浮点字面值.

现在我有一位同事说:

我们应该使用float-literals进行浮点计算,使用double-literals进行双重计算,因为在计算中使用常量时,这可能会影响计算的精度.

具体来说,我认为他的意思是:

double d1, d2;
float f1, f2;
... init and stuff ...
f1 = 3.1415  * f2;
f1 = 3.1415f * f2; // any difference?
d1 = 3.1415  * d2;
d1 = 3.1415f * d2; // any difference?
Run Code Online (Sandbox Code Playgroud)

或者,由我添加,甚至:

d1 = 42    * d2;
d1 = 42.0f * d2; // any difference?
d1 = 42.0  * d2; // any difference?
Run Code Online (Sandbox Code Playgroud)

更一般地,只有我可以看到用点2.71828183f是确保我试图不断的指定实际上将放入一个浮动(编译错误/警告其他方式).

有人可以对此有所了解吗?你指定f后缀吗?为什么?

从答案中引用我隐含的理所当然:

如果你正在使用float变量和double literal,整个操作将以double形式完成,然后转换回float.

可能有任何伤害吗?(除了非常非常理论的性能影响?) …

c++ floating-point double literals

29
推荐指数
3
解决办法
8437
查看次数

带指数的浮点文字的类型

具有指数部分的浮点文字的类型是什么,例如123456e-3在 C(99+) 中?它是类型float还是double?当用作float初始化器时float f = 123456e-3; ,它需要有f后缀吗?

c floating-point

10
推荐指数
3
解决办法
235
查看次数

分配给“float”时,附加“f”何时会更改浮动常量的值?

f在将常量分配给 a 时,将an应用于浮点常量似乎没有什么区别float

int main(void) {
  float f;
  //  1 2345678901234567
  f = 3.1415926535897932;
  printf("%.6a  %.8f  pi 3.1415926535897932\n", f, f);
  f = 3.1415926535897932f;              // v
  printf("%.6a  %.8f  pi 3.1415926535897932f\n", f, f);
}
Run Code Online (Sandbox Code Playgroud)

有或没有f,值是一样的

// value       value          code 
0x1.921fb6p+1  3.14159274  pi 3.1415926535897932
0x1.921fb6p+1  3.14159274  pi 3.1415926535897932f
Run Code Online (Sandbox Code Playgroud)

为什么要使用f

c floating-point

7
推荐指数
1
解决办法
108
查看次数

在 C 和 C++ 中使用浮点转换与浮点后缀之间有什么区别吗?

这之间有区别吗(使用浮点文字后缀):

float MY_FLOAT = 3.14159265358979323846264338328f; // f suffix
double MY_DOUBLE = 3.14159265358979323846264338328; // no suffix 
long double MY_LONG_DOUBLE = 3.14159265358979323846264338328L; // L suffix
Run Code Online (Sandbox Code Playgroud)

vs 这个(使用浮点转换):

float MY_FLOAT = (float)3.14159265358979323846264338328;
double MY_DOUBLE = (double)3.14159265358979323846264338328;
long double MY_LONG_DOUBLE = (long double)3.14159265358979323846264338328;
Run Code Online (Sandbox Code Playgroud)

在 C 和 C++ 中?

注意:函数调用也是如此:

void my_func(long double value);

my_func(3.14159265358979323846264338328L);
// vs
my_func((long double)3.14159265358979323846264338328);
// etc.
Run Code Online (Sandbox Code Playgroud)

有关的:

  1. 长双字面量的 C++ 后缀是什么?
  2. https://en.cppreference.com/w/cpp/language/floating_literal

c c++ floating-point casting

6
推荐指数
2
解决办法
157
查看次数

如果写小数点,还需要字母“f”吗?

下面两行代码有什么区别?

#define F_SAMP 10000.0f

#define F_SAMP 10000.0

两个不都浮起来吗?(顺便说一句,在这种特殊情况下,编译器是 XC16,但我认为这并不重要)感谢您的关注

c floating-point constants preprocessor-directive xc16

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

在math.h中使用宏定义(例如M_PI),因为float不加倍

我注意到所有数学常数都声明为double,这在某些不存在双精度单位的平台上导致转换问题。GCC标准库中是否有一个开关可以自动向下转换或使用单独的定义?

c++ gcc

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

在上面的"浮动i = 0.7"初始化之后,"i <0.7"是真的吗?

可能重复:
浮点比较

#include<stdio.h>
#include<conio.h>
int main()
{
float i=0.7;
clrscr();
if(i < 0.7)
     printf("If Block");
else
     printf("Else Block");
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不明白whay输出将是"If block".....请帮助为什么if部分被执行?

c c++

1
推荐指数
1
解决办法
1817
查看次数

c/c ++双浮点值表示法

C/C++中双精度浮点值的符号是什么?

.5表示双值或浮点值?

我很确定2.0f被解析为一个浮点数而2.0作为一个双解析但是.5呢?

http://c.comsci.us/etymology/literals.html

c++ floating-point double numbers

0
推荐指数
1
解决办法
4626
查看次数