草庐IT

Double-precision_floating-point_f

全部标签

c++ - 将 float 转换为字符串

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:ConvertdoubletostringC++?我在页面中搜索,但没有找到解决方案。我有一个方法可以将int转换为string。但现在我需要将float/double转换为字符串。因为我想在文件中写入一些数据。谁能帮帮我??提前致谢。

c++ - 将精度 double 转换为字符串

我在C++中将大量数字存储为精确的double值(假设输入“n”为75):2.4891e+109有没有办法将其转换为字符串或每个数字的数组?到目前为止,这是我的代码,尽管它与问题并不完全相关:intmain(){doublen=0;cout>n;doubleval=1;for(doublei=1;i 最佳答案 std::stringstreamstr;str您可能还对scientific格式标志感兴趣。C++11也有一些有趣的函数std::to_string你可能想看看! 关于c++-将

c++ - 当输入声明为 double [C++] 时检查输入是否为空

我有三个声明为double的变量:doubleDelay1=0;doubleDelay2=0;doubleDelay3=0;然后我从用户那里获取他们的值:cout>Delay1;...但是当我检查这些值以查看它们是否为空时(用户只是按回车键并没有输入数字)它不起作用:if(Delay1||Delay2||Delay3==NULL)printerrror...每次都会运行。检查已声明为double的输入是否为空白的正确方法是什么? 最佳答案 有点像cin>>Delay1;if(cin){...}不会根据您的规范工作,因为cin将跳过前

c++ - 在 C++ 中找到两个 float 最大值的最快方法是什么?

找到两个float最大值的最快方法是什么:一)y=std::max(x1,x2);二)if(x1>x2)y=x1;elsey=x2;c)y=x1>x2?x1:x2;谢谢 最佳答案 这是一个不同的问题Whydoyouthinksuchasmalloptimizationwillmatterinthegreatercontextofyourprogram?我发现像这样的微优化不太可能对您的程序产生明显的影响。你永远不应该像这样进行微优化,除非分析器明确表明这是一个问题。编辑添加一些隐藏在评论中的说明这个问题没有很好的答案的原因是该代码的

c++ - 从字符串到数字大于 std::numeric_limit<double>::digits10 的 double 的转换

std::stringstr="12345679012.124678";doubleback=boost::lexical_cast(str);std::stringstr2=boost::lexical_cast(back);//herestr2isequaltostr即使数字的有效数字大于std::numeric_limit::digits10(即15),此处也没有丢失(即最终字符串=原始字符串)是否正常? 最佳答案 是的,这很正常。std::numeric_limit::digits10指的是确保强制转换无损的最大位数。这并不

c# - 如何正确地将 float 从 C# 传递到 C++ (dll)

当我将float从C#传递到C++时,我发现了巨大的差异。我正在传递一个随时间变化的动态float。使用调试器我得到这个:c++lonVel-0.036019072floatc#lonVel-0.029392920float我确实将我的MSVC++2010浮点模型设置为/fp:fast如果我没记错的话这应该是.NET中的标准,但这没有帮助。现在我不能给出代码,但我可以展示它的一小部分。从C#来看,它看起来像这样:namespaceExample{publicclassWheel{publicboolloging=true;#regionMemberspublicIntPtrnative

c++ - GL_POINTS 在粒子模拟中相互遮挡

我有一个火灾模拟,包含大量带纹理的GL_POINTS。每个粒子都有一个透明的背景,当从特定角度面对火焰时,混合工作正常。然而,从其他角度查看它会显示背景,这些背景应该是透明的,遮挡了在其他人后面渲染的粒子。见下图。如您所见,粒子的路径上似乎有很多黑框。我怎样才能避免这种情况?我使用的混合函数是GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA。使用GL_ONE作为glBlendFunc的第二个参数给出非常相似的结果。 最佳答案 http://www.opengl-tutorial.org/intermediate

c++ - 为什么 g++ 声明某些 valarray<double> o 有 "no matching function for call cbegin(o)"?

请考虑以下代码:usingcustom_t=std::valarray;custom_to;unsignedacc=std::accumulate(std::cbegin(o),std::cend(o),0);g++-5说Nomatchingfunctionforcalltocbegin(custom_t&)如果我改用std::begin(o)和std::end(o),一切正常。这是编译器错误吗?代码使用VisualStudio2015编译。 最佳答案 这是一个libstdc++错误,我刚刚创建了https://gcc.gnu.or

c++ - 理解 double-to-int 转换中的 int-vs-trunc 关系

当我运行以下代码时#include#includeusingnamespacestd;intmain(){enum{FACTOR=3};doubled=1.0/FACTOR;doubled_i=int(d*FACTOR);inti_t=std::trunc(d*FACTOR);doubled_r=std::round(d*FACTOR);cout在Code::Blocks17.12IDE中(使用我认为/希望的全包工具),我得到了这些令人困惑的结果:0vs1vs1我尝试更改编译器,但没有任何改变。最后我安装了MinGW-64版本8.1.0。我的构建日志显示--------------Cl

c++ - 我如何在 C++ 中对包含 double 值的字符串强制执行精度

示例输入字符串:char*str="12345.567675";如果我需要小数点后3位的精度,则需要输出:str="12345.568";有没有办法在不将字符串转换为double然后再转换回字符串的情况下执行此操作? 最佳答案 是的,在高层:1.搜索“.”在字符串中。2.如果'.'的位置+3小于你做的长度。3.否则,在'.'位置连接字符串+3.4.这里有点棘手:你需要检查下一个字符是否存在,('.'+4),如果它的值>=5则转到4.1(否则转到5)4.1.将字符串复制到左侧多一个空格的新字符串(因为在“4”循环中9.9999将更改为