繁体   English   中英

双重用作实数的默认数据类型

[英]Double as default datatype for real numbers

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

编辑:我知道我总是可以使用10.10f,如果我希望它是浮动的。
但是我想知道的是,是否有任何“特定/精确”原因将其假定为double?

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

因为文字10.10的类型是double

如果您总是将double传递给函数,则参数为“始终假定为double”。

但是我想知道的是,是否有任何“特定/精确”原因将其假定为double?

因为那是双重文字的语法。

如果您在此页面上描述浮点文字的语法 ,那么您会发现

后缀(如果存在)是f,F,l或L之一。后缀确定浮点文字的类型:

  • (无后缀)定义双精度
  • f F定义浮点
  • l L定义长双精度

强调我的。

文字的类型(例如10.10double 等效的float文字将是10.10f10.10F 因此,如果将10.10作为参数传递给函数,则该参数为double。 但是,在函数声明中设置了函数的参数类型:

void foo(float x); // parameter is float

foo(1.23); // double argument to function with float parameter

如果不允许转换,则参数类型和参数类型之间的任何不匹配都将导致隐式转换(可能导致精度损失)或编译器错误。

“ double”的精度大于“ float”数据类型的精度。 如果要使其为浮点值,请像

10.10f

这将为您工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM