- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要构建一个函数,它接受 uin64_t (SATOSHI) 并输出一个带有 BTC 值的字符串。有人告诉我在没有任何除法/ float 的情况下这样做,所以应该涉及纯字符串操作。这是因为如果我选择 Satoshi/1BTC,我最终会得到一个很好的值(value),但无法将其正确转换为字符串(由于四舍五入)
想不出办法怎么做,知道:
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());
错误:0.010335测试:0.01033468
但是当uiSatoshi的值为101033468时失败了由于结果是圆的:TEST: 1.0103347
我想避免进行浮点运算,只需用我拥有的整数制作一个字符串,添加前导零并在需要的地方放置点。
更新:答案张贴在这里:C++ printf Rounding?
最佳答案
一个简单的转换例程如下:
#include <iostream>
#include <string>
using namespace std;
string to_btc(uint64_t sat) {
auto s = to_string(sat);
if (s.length() < 8) {
// Prefix with 0s
s.insert(0, (8 - s.length()), '0');
s.insert(0, "0.", 2);
} else if (s.length() == 8) {
s.insert(0, "0.", 2);
} else {
// Insert a '.' in the right place
s.insert(s.length() - 8, 1, '.');
}
return s;
}
int main ()
{
cout << to_btc(10346834567ULL) << endl;
cout << to_btc(1034683456ULL) << endl;
cout << to_btc(103468345) << endl;
cout << to_btc(10346834) << endl;
cout << to_btc(1034683) << endl;
cout << to_btc(10368) << endl;
cout << to_btc(1038) << endl;
cout << to_btc(132) << endl;
cout << to_btc(18) << endl;
cout << to_btc(1) << endl;
cout << to_btc(0) << endl;
}
不需要花车,我并不是说这已经完成并可以投入生产,但我相信您可以对其进行彻底测试,以检查它是否符合您的预期。它可以被优化吗 - 可能,但我会把它留作练习......
关于C++ 将 SATOSHI(uint64_t) 转换为没有 float / double 的 BTC(字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33479011/
我有这个代码来获取用户输入并验证它以增加用户钱包中的用户 BTC。我需要解释一下这个代码是如何工作的。代码: #include using namespace std; int main() {
我正在尝试访问中间包含列表的嵌套字典 r={ "status": { "timestamp": "2019-07-07T09:26:17.112Z", "err
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在编写一个 JavaScript 函数来返回当前的 BTC/USD 汇率。我做了一些研究,但我只想要一些简单的东西。它不会在服务器端用于计算值(明显的安全隐患),而只是为了方便我的用户。我有 2
我正在尝试将 BTC-e.com API 合并到 Google 文档电子表格中。 API 文档位于:https://btc-e.com/api/documentation The method nam
此代码显示 Error Number: 1048 “btc”列不能为空 但实际上我发送的一切都是正确的,我什至尝试了带有 URL 的参数,但它仍然说 btc 不能为空。怎么了 $date=''
我正在尝试学习如何使用 Python、requests 和 BeautifulSoup 从 Coinmarketcap.com 网络抓取 BTC 历史数据。 我想解析以下内容: 1)日期 2)关闭 3
我需要更正和转换一个函数,检查 btc 余额的 2 个地址,例如(addr 和 addr1),返回的是 json 值,我需要指定我不太了解 golang..需要帮助! func balance(add
这是对 this post 的后续问题但我的问题更多是与编程相关,所以我希望这是发布它的正确位置。 我也在尝试使用 BTC Pay Server 作为钱包。 Thera有两个问题: 如文章所述,您必须
有没有办法显示预先填充金额的 Coinbase iframe(而不是允许用户更改 iframe 中的金额)?理想情况下,我希望用户能够在点击“用比特币支付”按钮之前输入金额。 我知道这可以通过在用户单
所以我对 Rails 比较陌生,但一直在尝试建立一个小商店来出售一些比特币的东西。当我在我的本地环境中运行我的店面时,我的定价看起来不错(即一本 0.001 BTC 的书),但是当我将它实时推送到 H
我正在开发一个与加密货币交易相关的项目,我需要选择币安交易所的一个市场对,并且根据对的选择,我必须显示各种结果,例如当前价格、24 小时价格变化、24 小时交易量和最后的交易量该市场对的 10 条交易
我尝试使用以下公式从 Google 表格中的 Google 财经获取数据: =GoogleFinance("CURRENCY:BTC") 但我收到此错误: GOOGLEFINANCE, the que
我需要构建一个函数,它接受 uin64_t (SATOSHI) 并输出一个带有 BTC 值的字符串。有人告诉我在没有任何除法/ float 的情况下这样做,所以应该涉及纯字符串操作。这是因为如果我选择
我已经编写了一些代码来从 investing.com 上抓取 BTC/ETH 时间序列,它运行良好。但是,我需要更改请求调用,以便下载的数据来自 Kraken 而不是 bitfinex 默认值,并且来
我刚开始使用 Flutter,我正在尝试创建一个可以支持多种不同加密货币的加密钱包应用程序。我目前面临的问题是,在尝试为多个钱包创建备份时,我不知道如何为不同的加密货币生成助记符代码。我正在使用这个库
我是一名优秀的程序员,十分优秀!