1
我需要構建一個函數,它需要uin64_t(SATOSHI)並吐出一個BTC值的字符串。 我被告知沒有任何劃分/浮動,所以應該涉及普通的字符串操作。這是因爲如果我去智/ 1BTC我將結束了一個很好的價值,但將無法正確地將它轉換成一個字符串(由於四捨五入)C++將SATOSHI(uint64_t)轉換爲BTC(字符串)無浮點/雙
想不到如何做到這一點,知道如下:
uin64_t uiSatoshi = 1033468;
uint64_t uiOneBTC = 100000000;
std::string strBTC = "";
如何在UiSatoshi中構建strBTC,知道BTC有8位小數。
嘗試:
// SATOSHI TO STRING (for exchange)
int iSatoshi = 1033468;
double dVal = (double)iSatoshi/(double)100000000;
std::ostringstream out;
out << std::setprecision(8) << dVal;
std::string strOutput = out.str();
printf("WRONG: %f\n", dVal);
printf("TEST: %s\n", strOutput.data());
WRONG:0.010335 TEST:0.01033468
但是失敗時uiSatoshi的值= 如結果是圓形的:TEST:1.0103347
而我想避免做浮點運算,只是使一個字符串超出我有的整數,在需要的地方添加前導零並放置點。
更新: 答案貼在這裏:C++ printf Rounding?
我附加到您的上一個問題的評論的第二個鏈接顯示如何創建一個更多的小數位數字符串.. – Nim
@Nim我已經檢查過,它不起作用,看到更新的任務。 – PeeS
'uiOneBTC'將始終以'10^x'的形式出現嗎? – NathanOliver