当我调试时,我有时想打印一个函数返回的浮点数,并将其用作另一个函数的输入值。我想知道指导浮点数格式的默认参数是什么。
在下面的代码中f1和f2总是相同的吗?
#include <sstream>
#include <cassert>
int main(int argc, const char *argv[])
{
std::stringstream ss;
float f1 = .1f;
ss << f1;
float f2;
ss >> f2;
assert(f1 == f2);
return 0;
}
我可以写一堆浮点数std::c或std::的蒸汽,并读他们回来得到完全相同的数字,或者我应该显式设置小数点后的数字量(就像这里建议的那样?
让我烦恼的是,尽管.1不能表示为二进制分数,但它仍然由标准流正确格式化。
更重要的是断言(f1==f2);当f1和f2都是浮点数时,很少是正确的。你需要像assert(abs(f1-f2)这样的东西
不,它们不能保证是一样的。
实际情况是,浮点本身的精度比默认情况下打印出来的精度更高,因此,只要读入的有效位数少于默认输出精度,打印出来的内容(至少通常)就会被舍入回读入的值。
但是,如果您有使用浮点
的全精度的数据,并且您以全精度读入然后写回,您将开始看到差异。
#include <sstream>
#include <iomanip>
#include <iostream>
int main() {
std::istringstream buffer("0.1");
float value;
buffer >> value;
std::cout << value << "\n";
std::cout << std::setprecision(10) << value;
}
结果:
0.1
0.1000000015
在这种情况下,尾随的15
是(大约)0.1和我的编译器的浮点所能表示的最接近的近似值之间的差值。
不一定。默认情况下,ostream
输出6位数的精度。为了能够“往返”浮动,您需要std::的精度numeric_limits
ss.precision( std::numeric_limits<float>::max_digits10 );
(如果您需要同时处理
float
和double
,并且不想在float
上增加额外的数字,那么每次输出浮点值时都需要设置精度。)
问题内容: 根据html5.org的说法,“数字”输入类型的“值属性,如果指定且不为空,则必须具有一个有效浮点数的值”。 但这只是简单的(无论如何,在最新版本的Chrome中),是一个带有整数而不是浮点数的“上下”控件: 是否存在HTML5固有的浮点输入元素,或一种使数字输入类型适用于浮点而不是整数的方法?还是我必须使用jQuery UI插件? 问题答案: 该类型具有一个值,该值控制哪些数字有效(
问题内容: 比较浮点数和这样的整数是否安全? 根据JLS(5.6.2。二进制数值提升),如果其中一个参数为,则另一个参数将转换为比较之前的值。但是据我了解,如果转换后的float与原始float二进制相同,则这样的比较将返回true。我们如何确保呢? 问题答案: 是的,您的具体示例很好,因为和都可以精确地表示为。 请注意,通常情况下并非如此:有很多大值无法完全表示为。例如,即使2_000_000_
我正在为我的sqlite日志数据库使用准备好的语句。 我的线程每50ms运行一次,将日志缓冲区中的内容写入数据库。 目前,我正在对每个线程运行一个新的准备好的语句批处理,并在所有数据线写入后关闭它们。 现在我想知道是否最好将准备好的语句保存在内存中,并仅在线程关闭/中断时关闭它? 我之所以进行这种预优化,是因为我希望这个日志线程对主应用程序性能的干扰尽可能小,我可以想象每50秒分配/解析/验证资源
浮点是C语言中定义的实现,因此没有任何保证。 我们的代码需要可移植,我们正在讨论是否可以在协议中使用IEEE754浮动。出于性能考虑,如果我们在发送或接收数据时不必在定点格式之间来回转换,那就太好了。 虽然我知道平台和架构之间在或的大小上可能存在差异。但我似乎找不到任何关于和的具体信息。 到目前为止,我发现在big endian平台上字节顺序可能会颠倒。虽然有些平台不支持浮点运算,但包含和的代码甚
问题内容: 库中是否提供Python保留字和内建函数的列表?我想做类似的事情: 问题答案: 要验证字符串是关键字,您可以使用; 要获取保留关键字列表,可以使用: 如果你想包括内置的名称,以及(Python 3中),然后检查该模块: 对于Python 2,你需要使用的模块
根据 Java 教程,Double Wrapper 类支持 String 和 Double 作为参数。 但是我可以使用浮点参数。检查下面的代码。有人能澄清一下吗? 类测试 { } 10.5 10.5