取整并通过 XML-RPC 发送
Round a double and send it over XML-RPC
我需要将一些双精度值四舍五入到最多四位小数,然后将它们发送到 XML-RPC using this library。
到目前为止我所做的如下:
首先我有一个圆形函数:
double roundD(double x, unsigned int precision = 4)
{
return round(x * pow(10.0, double(precision))) / pow(10.0, double(precision));
}
根据 this,它工作正常。
在我的应用程序中,我有一个设置方法 setXValue,它采用一个双精度和一个 toXmlRpc() 方法来输出一个 XmlRpcValue 对象:
class Point{
public:
Point(double x, double y) {m_x = x; m_y=y;}
void Point::setXValue(double x)
{
m_x = roundD(x);
}
XmlRpcValue Point::toXmlRpc() const
{
XmlRpcValue xmlrpcvalue;
xmlrpcvalue["x"] = m_x;
return xmlrpcvalue;
}
private:
double m_x;
double m_y;
我在 XML-RPC 值中存储的不是四舍五入的双精度值。事实上,当收到 XML-RPC 答案时,我看到像 0.3488、0.1154 这样的好值,还有 9.059900000000001 或 8.990399999999999.
形式的值
我确信我的 roundD 函数工作正常(我已经在 C++ playground 中测试过)那么问题出在哪里?
我不能像这样将值存储在 XmlRpcValue 对象中:
char str[80];
sprintf(str, "%.4f", m_x);
xmlrpcvalue["x"] = str;
否则我会更改 xml-rpc 数据类型,那是不正确的。
尝试使用 XmlRpcValue 的这个成员函数:
setDoubleFormat (const char *f)
//Specify the format used to write double values.
我需要将一些双精度值四舍五入到最多四位小数,然后将它们发送到 XML-RPC using this library。
到目前为止我所做的如下:
首先我有一个圆形函数:
double roundD(double x, unsigned int precision = 4)
{
return round(x * pow(10.0, double(precision))) / pow(10.0, double(precision));
}
根据 this,它工作正常。
在我的应用程序中,我有一个设置方法 setXValue,它采用一个双精度和一个 toXmlRpc() 方法来输出一个 XmlRpcValue 对象:
class Point{
public:
Point(double x, double y) {m_x = x; m_y=y;}
void Point::setXValue(double x)
{
m_x = roundD(x);
}
XmlRpcValue Point::toXmlRpc() const
{
XmlRpcValue xmlrpcvalue;
xmlrpcvalue["x"] = m_x;
return xmlrpcvalue;
}
private:
double m_x;
double m_y;
我在 XML-RPC 值中存储的不是四舍五入的双精度值。事实上,当收到 XML-RPC 答案时,我看到像 0.3488、0.1154 这样的好值,还有 9.059900000000001 或 8.990399999999999.
形式的值我确信我的 roundD 函数工作正常(我已经在 C++ playground 中测试过)那么问题出在哪里?
我不能像这样将值存储在 XmlRpcValue 对象中:
char str[80];
sprintf(str, "%.4f", m_x);
xmlrpcvalue["x"] = str;
否则我会更改 xml-rpc 数据类型,那是不正确的。
尝试使用 XmlRpcValue 的这个成员函数:
setDoubleFormat (const char *f)
//Specify the format used to write double values.