我试着用科学记数法,但考虑到正确的规则是:A)对于以0、1、2、3、4结尾的所有十进制数,四舍五入必须为低数量级; B)对于以5、6、7、8、9结尾的所有十进制数,四舍五入必须为高数量级。
我执行了以下函数:
std::string MyClass::doubleToString(double num, int precision) {
std::ostringstream ss;
ss << std::scientific << std::setprecision(precision) << num;
return ss.str();
}
例如,当我调用doubleToString(0.35, 0)
时,它返回3E-1,而它应该返回4 E-1。我认为这是一个非常简单的问题,但我不明白为什么我没有得到正确的行为。
1条答案
按热度按时间3htmauhk1#
看来你是想凑一半。
在C++中,您可以尝试使用
std::fesetround
更改浮点舍入模式:例如,参见https://godbolt.org/z/WhGe89one
但是请注意,这不会产生您想要的输出。