亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 1235 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號