草庐IT

Double-precision_floating-point_f

全部标签

c++ - 如何打印完整的 float 而不是 "1.01383e+007"?

我想打印出一些大的float总和的完整合法值,但是当float足够大时,您会得到这种符号,例如“1.01383e+007”。如何获得合法值(value)? 最佳答案 我读到你的问题意味着你不想输出科学格式。如果是这样,那么您可以像这样控制流格式:cout 关于c++-如何打印完整的float而不是"1.01383e+007"?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/858

c++ - 如何判断 double float 是否可以安全地存储为单精度 float ?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Realnumbers-howtodeterminewhetherfloatordoubleisrequired?我正在尝试检查从double到float的转换是否会导致精度损失。显然,我可以进行转换并将float转换回double并将其与原始值进行比较。我很好奇是否有更直接的方法。

c++ - 如何使用外部链接在 namespace 范围内定义常量 double?

我正在尝试创建一个带有外部链接的命名空间范围常量//insomeincludefile:namespacefoo{constexprdoublebar(){return1.23456;}//internallinkageconstexprdoublebaz=1.23456;//internallinkageconstdoublebing=1.23456;//internallinkage}这可能吗? 最佳答案 是,也不是;你可以使用extern:[C++11:3.5/3]:Anamehavingnamespacescope(3.3.

c++ - C++ std::numeric_limits<float>::max() 能否准确地存储在一个 float 中,然后进行比较?

我知道有些值无法在float中轻松定义,并且只是“近似值”,因此直接“等于”比较通常不起作用。std::numeric_limits::max能否准确地存储在float中,这段代码能否按预期运行?floatmyFloat=std::numeric_limits::max();//...later...if(myFloat==std::numeric_limits::max()){//...myFloathasn'tchanged...} 最佳答案 对于给定的(非NaN)float变量,f,保证f==f总是正确的。自myFloat设置

Ruby Double Splat参数太贪婪,哈希参数

在Ruby2.4.1中,我有这样的方法:defexample(*args,**kwargs)pargspkwargsend我可以通过位置论点不是哈希很好:irb(main):001:0>example("Greetings")["Greetings"]{}而且,如果我想使用命名参数,那也很好:irb(main):002:0>example(something:42)[]{:something=>42}但是,试图将哈希作为位置论点,这发生了:irb(main):002:0>example({something:42})[]{:something=>42}我想*args拿{something:42

c++ - 使用 Float 或 Double 类型时不显示小数

我的代码是这样的:#includeintmain(){usingnamespacestd;constfloatdollar=1.00;cout我是C++的初学者。我输入这段代码只是玩玩,并假设控制台会显示“你有10.00美元,但它实际上显示我有“10”而不是“10.00”美元。有人能告诉我这是为什么吗? 最佳答案 由于您正在处理美元金额,您可以在写入cout之前设置以下内容:std::cout.precision(2);std::cout.setf(std::ios::fixed);Livecodeexampleatcoliru#i

c++ - 字符串到 double 转换 C++

这个问题在这里已经有了答案:HowdoIprintadoublevaluewithfullprecisionusingcout?(17个答案)关闭8年前。我正在尝试将字符串转换为double,但我的double在小数点后第三位被截断。我的字符串如下所示:“-122.39381636393”转换后它看起来像这样:-122.394voidsetLongitude(stringlongitude){this->longitude=(double)atof(longitude.c_str());coutlongitude输出示例:gotlongitude:-122.39381636393set

c++ - 使用 __float128 编译 C++ 代码

我正在尝试在我的C++程序中使用__float128。但是我在编译它时遇到了麻烦。这是简单的C++代码(test.cc):#include#includeusingnamespacestd;intmain(){__float128r=0.0q;__float128exp_d=expq(12.45q);cout然后我用编译这段代码g++test.cc-lquadmath-std=c++11出现以下错误错误:无法找到数字文字运算符'operateor""q'我该如何解决? 最佳答案 Gcc-5打印出这个有用的附加说明:note:use-

c++ - 最小 float (最接近零)

我试图找到可以存储在单个精度float中的最小值(最接近零)。使用header我可以获得这个值,但是如果我把它变得更小,float仍然可以容纳它并且它会给出正确的结果。这是一个测试程序,用g++5.3.0编译。#include#include#includeusingnamespacestd;intmain(){floata=numeric_limits::max();floatb=numeric_limits::min();a=a*2;b=b/pow(2,23);cout如我所料,“a”给出无穷大,但“b”即使在将最小值除以2^23后仍保持良好结果,之后它给出0。给出numeric_

c++ - 按位将 uint32_t 强制转换为 C/C++ 中的 float

我正在从网络接收缓冲区,该缓冲区已转换为32位字数组。我有一个词被我的接口(interface)文档定义为IEEE-754float。我需要从缓冲区中提取这个词。在不调用转换的情况下很难从一种类型转换为另一种类型。这些位已经符合IEEE-754浮点标准,我不想重新安排任何位。我的第一个尝试是将uint32_t的地址转换为void*,然后将void*转换为float*,然后解引用为float:floatieee_float(uint32_tf){return*((float*)((void*)(&f)));}error:dereferencingtype-punnedpointerwil