Double作为实数的默认数据类型

时间:2016-07-14 12:25:33

标签: c++ type-conversion

当任何实数表示10.10作为参数传递给函数时,为什么总是假设它是double而不是float?

编辑:我知道如果我想让它漂浮,我总能使用10.10f 但我想知道的是,有没有特定的/精确的"为什么它被认为是双倍?

3 个答案:

答案 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.10f10.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

这对你有用。