2013-02-01 41 views
2

這甚至可能嗎?我試圖谷歌它,但我似乎無法找到正確的答案。聲明浮點變量只包含3個小數位

我需要限制小數位數,因爲如果只有3位小數的位數小於5,答案將會有所不同,所以我希望您能幫助我解決這些問題。我知道如何打印3位小數,但聲明一個變量只能保持3位小數是我不知道的。如果您有任何問題,我也可以使用一些鏈接。

float sinfa(float num1) 
{ 
    float fc; 
    float powers; 
    float rad_angle; 

    rad_angle = num1 * (PI/180.0); 
    powers = pow(num1,4); 
    fc = sin(rad_angle)-powers+1; 
    return (fc); 
} 

float sinfb(float num2) 
{ 
    float fd; 
    float powerss; 
    float rad_angle1; 

    rad_angle1 = num2 * (PI/180.0); 
    powerss = pow(num2,4); 
    fd = sin(rad_angle1)-powerss+1; 
    return (fd); 
} 

float tp(float fa,float fb,float num1,float num2) 
{ 
    float p; 
    float fm2 = fa*num2; 
    float fm1 = fb*num1; 
    p = (fm2-fm1)/(fa-fb); 
    return (p); 
} 

float sinp(float p1) 
{ 
    float fop; 
    float ppowers; 
    float rad_angle2; 

    rad_angle2 = p1 * (PI/180.0); 
    ppowers = pow(p1,4); 
    fop = sin(rad_angle2)-ppowers+1; 
    return (fop); 
} 

謝謝

+0

只需編寫完全符合您需要的代碼即可。例如,您可以將整體部分保存在一個變量中,將千分之一保存在另一個變量中。或者將整數值存儲1,000次。 –

+0

這聽起來像你試圖解決錯誤的問題。你能解釋你想做什麼嗎? –

+0

可以說我想用3.1234來倍數1.2345,但是我想用3.123來得到1.234,因爲小數點後第四位可以對乘法的答案有很大的區別。 – magicianiam

回答

2

不能完成。 A float是我曾經使用過的每個C編譯器中的32位浮點值。語言中沒有任何標準來重新定義它的工作原理。

可以寫了一組存儲,再乘以1000的值定點功能,或者使用實現固定點以任意精度的通用庫和精度設置爲3個十進制數字。

C++ fixed point library?

+1

「A'float」是一個32位整數。「 < - 這是*絕對不是真的*。 – us2012

+0

我希望這會有一個簡單的方法,從來沒有我曾經嘗試使用3小數點浮點直到現在。 – magicianiam

+0

@ us2012,這是錯字的精神等同物。我的意思是說「浮點值」,我不知道如何在那裏鍵入「整數」。感謝您指出;我編輯了答案來糾正它。我想在理論上,一個'浮動'可能是32位以外的其他大小,就像在一些奇怪的小型計算機上它可能是40位或者什麼的,所以我在32位聲明中添加了一些合格的文本以保證安全! – steveha

2

你有一個十進制數1.234567,但你真的希望它是1.234。你怎麼做呢?

訣竅是首先將所需的數字移動到小數點左邊,截斷小數點右邊的所有數字,然後將正確的數字移回到右邊小數點的一側。

int intVal = 1.234567 * 1000;  // result: 1234 
float floatVal = (float)intVal/1000; // result: 1.234