線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4050
推到 Plurk!
推到 Facebook!

四捨五入

尚未結案
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-13 00:29:40 IP:59.104.xxx.xxx 未訂閱
#include 
#include 
#include     using namespace std;    int main()
{        float i = 30.123556;
    float j = (int)((i*1000) 0.5)/1000.0;
            cout<< j;        system("pause");
    return 0;    }    
float j = (int)((i*1000) 0.5)/1000.0; 為什麼這邊使用(int)而不是(float)搞不懂 (int)是屬於)((i*1000) 0.5)嗎??? 而不是(int)((i*1000) 0.5)/1000.0;整個的型態嗎?? 還有請問下面有效位問題~
    #include 
#include 
#include     using namespace std;    int main()
{        
    double i = 0.12345678912345678; //有效位  
    double j = 0.12345678912345677; //有效位  
    cout<    我看書上有說double有效位是15位數 , flaot有效位是7位數
但我搞不懂為什麼我上面我測試的小程式 double到17位數都還是有效位
flaot也有8位數??    這是跟系統 & 編譯器有關係嗎?? 還有所謂有效位數是從小數點後算起嗎 ??    謝謝     
        

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-13 01:17:59 IP:220.134.xxx.xxx 未訂閱
有效位數怎麼算要看你的數是怎樣的型式. ex: 0.123 -->有效位數3位 1.234 -->有效位數4位
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-13 01:44:53 IP:219.68.xxx.xxx 未訂閱
您好: 1. float j = (int)((i*1000)+0.5)/1000.0; 為什麼這邊使用(int)而不是(float)搞不懂 使用甚麼都可以,是要看您得到甚麼。    (int)是屬於)((i*1000)+0.5)嗎??? 而不是(int)((i*1000)+0.5)/1000.0;整個的型態嗎?? 是的。    我想他應該是舉例給您看吧。 正常數學來講 30.123556*1000+0.5=30124.056 30124.056/1000=30.124056 他的範例 30.123556*1000+0.5=30124.056(轉成整數) 30124/1000=30.124xxx(轉成浮點數) xxx在轉成整數時已經不見了。    如果改為 float i = 30.123556; float j = (float)((i*1000)+0.5)/1000.0; 30.123556*1000+0.5=30124.056(浮點數) 30124.056/1000=30.124056(浮點數) 若改為float則可以保持他的精密度,達成一般數學運算所得到的值    2.我把他改成以下這樣也許您就知道了,以float來說,精密度7,並不代表7以後沒東西,只是保證7位數正確,第8位後面被4捨五入,就不會是您要的了。 好像國小教的1.235取小數點後兩位,然後我們會把第三位4捨五入變成1.24(應該是,記憶遙遠) 所以你會發現,當 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=23429628&CC=523992"> 發表人 - supman 於 2005/07/13 02:04:46
系統時間:2024-05-19 2:14:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!