为了账号安全,请及时绑定邮箱和手机立即绑定

float后加f为什么就能转换成double类型

float后加f为什么就能转换成double类型

C++
蝴蝶不菲 2019-04-02 05:00:41
float后加f为什么就能转换成double类型
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

可以这样来定义一个double型的
double d = 0.1;
然而,这样不可以通过
float f = 0.1;来定义一个float型的,这是因为默认的小数是double型的
要定义一个float型的,有两种方式
float f = 0.1f;
或者 float f = (float)0.1;

相互之间的转化:
举个例子:
假设有void f1(double d)
void f(float f)
这两个函数的定义

现在用上面定义的变量来调用一下就知道了
f(d);是有编译错误的,这说明java中double不能自动转化为float,改为f((float) d);就行了

但是f1(f),确是可以是,这是因为java可以自动的转化float至double来进行运算。

至于为什么?
java在运算时会自动的提升变量的精度来进行运算,double比float精度更高,所以可以自动的从float转化至double再进行运算。



查看完整回答
反对 回复 2019-04-03
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

是转换成Float类型,而不是double。
后面不加F的float a = 10.1;这种,浮点数10.1自动认为是double类型,但是定义的float,所以会有类型转换。

查看完整回答
反对 回复 2019-04-03
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

以下代码,测试通过,你试试

#include <iostream>

#include <iomanip>

#include <cmath>

using namespace std;

int main()

{

    int n;

    cin>>n;

    double dis=0,a[100],b[100],max=0;

    for(int i=0;i<n;i++)

    {

        cin>>a[i]>>b[i];

    }

 

    for( int j=0;j<n-1;j++ )

        for( int k=j+1;k<n;k++ )

        {

            dis=sqrt( (a[k]-a[j])*(a[k]-a[j]) + (b[k]-b[j])*(b[k]-b[j]) );

            if ( dis > max )

                max=dis ;

        }

    cout<<fixed<<setprecision(4)<<max<<endl;

    return 0;

}


 


查看完整回答
反对 回复 2019-04-03
  • 3 回答
  • 0 关注
  • 1205 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信