当任何实数表示10.10作为参数传递给函数时,为什么总是假设它是double而不是float?
编辑:我知道如果我想让它漂浮,我总能使用10.10f 但我想知道的是,有没有特定的/精确的"为什么它被认为是双倍?
答案 0 :(得分:4)
当任何实数表示10.10作为参数传递给函数时,为什么总是假设它是double而不是float?
因为文字10.10的类型是double
。
如果你总是将double传递给一个函数,那么参数是"总是假设为double"。
但我想知道的是,有没有特定的/精确的"为什么它被认为是双倍?
因为这是双字面的语法。
如果您查看 this page, describing the syntax of floating point literals,就会发现
后缀(如果存在)是f,F,l或L之一。后缀确定浮点文字的类型:
- (无后缀)定义了双
- f F定义float
- l L定义long double
强调我的。
答案 1 :(得分:3)
10.10
等文字的类型为double
。等效的float
字面值为10.10f
或10.10F
。因此,如果将10.10
作为参数传递给函数,则参数为double。但是,函数的参数类型在函数声明中设置:
void foo(float x); // parameter is float
foo(1.23); // double argument to function with float parameter
如果不允许转换,参数类型和参数类型之间的任何不匹配都将导致隐式转换(可能存在精度损失)或编译器错误。
答案 2 :(得分:0)
'double'的精度大于'float'数据类型的精度。如果要使其成为浮点值,请使用
10.10f
这对你有用。