草庐IT

floating-point-conversion

全部标签

c++ - 错误 C2679 : binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)

请不要与标题混淆,因为它已经有人问过了,但上下文不同VisualC++Compiler(VS2008)中的以下代码没有被编译,而是抛出了这个异常:std::ifstreaminput(fileName);while(input){strings;input>>s;std::cout但是这段代码在cygwing++中编译得很好。有什么想法吗? 最佳答案 您是否包含以下所有标题?我猜你忘了.附带说明:应该是std::cout和std::endl. 关于c++-错误C2679:binary'>

c++ - 将 int 重新解释为 float 的最有效的标准兼容方式

假设我保证float是IEEE754二进制32。给定一个对应于有效float的位模式,存储在std::uint32_t,如何将其重新解释为float以最有效的标准兼容方式?floatreinterpret_as_float(std::uint32_tui){return/*applysorcerytoui*/;}我有几种方法我知道/怀疑/假设有一些问题:通过reinterpret_cast,floatreinterpret_as_float(std::uint32_tui){returnreinterpret_cast(ui);}或等效floatreinterpret_as_float

c++ - 为什么 numeric_limits::min 为 int 返回负值,但为 float/double 返回正值?

为什么numeric_limits::min会为int返回负值,而为例如返回正值float和双倍?#include#includeusingnamespacestd;intmain(){cout::min()::min()::min()输出:int:-2147483648float:1.17549e-38double:2.22507e-308来自cppreference:ReturnstheminimumfinitevaluerepresentablebythenumerictypeT.Forfloating-pointtypeswithdenormalization,minretur

c++ - float 的跨平台/编译器一致 sprintf

我们有一款游戏需要确定性,因为它是其多人模式的一部分。我们也使用Lua,它在内部使用sprintf(格式为%.14g)。当它打印像0.00001这样的数字时会出现问题。在某些情况下,它会打印1e-05,而在其他一些情况下,它会打印出1e-005(额外的零)。例如,使用VisualStudio2015编译时,它会打印1e-005,而使用VisualStudio2013时,它会打印1e-05。我尝试了不同的语言环境设置,但似乎没有任何效果。问题是:实现确定性结果的最佳解决方案是什么?我真的不在乎科学记数法是标准化的还是被淘汰的。我想到的解决方案:当我使用%f表示法时,它不会忽略不重要的零,

c++ - 从 C++ 中的 std::chrono::time_point 中提取年/月/日等

如何从std::chrono::time_point对象中提取年、月、日、小时、分钟、秒和毫秒?我只看到了有关如何提取例如总量的示例。duration的秒数。 最佳答案 您只能从system_clock::time_point中提取此信息。这是系统提供的唯一与民用日历相关的时钟。以下是使用此时钟获取当前时间点的方法:system_clock::time_pointnow=system_clock::now();然后您可以使用以下命令将其转换为time_t:time_ttt=system_clock::to_time_t(now);然

c++ - 如何对 float 执行按位运算

我试过了:floata=1.4123;a=a&(1我收到一个编译器错误,提示&的操作数不能是浮点类型。当我这样做时:floata=1.4123;a=(int)a&(1我让程序运行起来。唯一的一点是,按位运算是对四舍五入后得到的数字的整数表示进行的。以下也是不允许的。floata=1.4123;a=(void*)a&(1我不明白为什么int可以转换为void*而不是float。我这样做是为了解决StackOverflow问题Howtosolvelinearequationsusingageneticalgorithm?中描述的问题。. 最佳答案

c++ - float 是否可以返回 0.0 减去两个不同的值?

由于浮点“近似”性质,两组不同的值可能返回相同的值。Example:#includeintmain(){std::cout.precision(100);doublea=0.5;doubleb=0.5;doublec=0.49999999999999994;std::cout但是减法也可以吗?我的意思是:是否有两组不同的值(保留其中一个值)返回0.0?即a-b=0.0和a-c=0.0,给定一些a,b和a,c的集合>与b!=c?? 最佳答案 IEEE-754标准经过精心设计,当且仅当两个值相等时,减去两个值会产生零,除非从自身减去无穷

c++ - double 或 float,哪个更快?

这个问题在这里已经有了答案:Isusingdoublefasterthanfloat?(10个回答)关闭8年前。我正在阅读“加速C++”。我发现一句话说“有时double在执行中比C++中的float更快”。读完句子后,我对float和double的工作感到困惑。请向我解释这一点。 最佳答案 取决于native硬件的功能。如果硬件是(或类似)具有传统x87数学的x86,float和double都(免费)扩展为内部80位格式,因此两者具有相同的性能(缓存占用空间除外/内存带宽)如果硬件像大多数现代ISA(包括x86-64,其中SSE2

c++ - 如何将 std::chrono::time_point 转换为带有小数秒的日历日期时间字符串?

如何将std::chrono::time_point转换为带小数秒的日历日期时间字符串?例如:"10-10-201212:38:40.123456" 最佳答案 如果是system_clock,这个类有time_t转换。#include#include#includeusingnamespacestd::chrono;intmain(){system_clock::time_pointp=system_clock::now();std::time_tt=system_clock::to_time_t(p);std::cout示例结果:

c++ - 执行 cv::warpPerspective 以在一组 cv::Point 上进行假偏斜

我正在尝试做一个perspectivetransformation一组点以实现deskewing效果:http://nuigroup.com/?ACT=28&fid=27&aid=1892_H6eNAaign4Mrnn30Au8d我正在使用下图进行测试,绿色矩形显示感兴趣的区域。我想知道使用cv::getPerspectiveTransform的简单组合是否有可能达到我希望的效果和cv::warpPerspective.我正在分享到目前为止我编写的源代码,但它不起作用。这是生成的图像:所以有一个vector这定义了感兴趣的区域,但是这些点没有以任何特定的顺序存储在vector内,这是我