草庐IT

valid_float

全部标签

c++ - 混合函数 - 增加 float

我正在浏览代码库并找到以下模板函数:templateTmix(constT&a,constT&b,constT2&interp){staticconstexprT2one=((T2)1);return(a*(one-interp))+(b*interp);}和下面的评论//You'dthinkinsteadofdoingthea*(1-t)+b*t,it'dbefaster//andonelessmultiplytodoa+(b-a)*t,right?Bad!Increasesfloating//pointexceptionoccurances.SameasLERP有人可以强调为什么这

c++ - 格式化 float

您好,我想格式化float,使其显示如下:小数.分数其中小数=最多11位数字和小数=最多9位数如果没有小数部分,则不应显示小数部分,小数部分中超过11位的数字将以科学形式表示。谁能帮帮我? 最佳答案 我认为没有这样的内部格式。需要自己格式化(未测试):voidfprintf_float(FILE*f,doublevalue){if(-1e110?"":"-";doubleipart,fpart;charfpartstr[16];intpos;fpart=modf(d,&ipart);snprintf(fpartstr,16,"%.9

c++ - float 据在 istream 输入上意外成功转换为整数

我正在编写一个模板函数,该函数将检查用户是否分配了答案应包含的正确数据类型。例如:intmain(){intE;cout(cin);cout函数clear_and_read定义为:templateTclear_and_read(istream&inputstream){cin.sync();//removesanythingstillincinstreamcin.clear();Tinput;inputstream>>input;while(inputstream.fail()){cout>input;}returninput;}现在,如果我尝试输入string而不是integer,这

c++ - 在 CUDA 上乘以两个 float 变量

我有一个非常有趣的问题,但我花了3个小时才解决它,但我只是想不通发生了什么以及为什么它不起作用。我试过谷歌它,但没有结果。我正在CUDA上编写程序。我有一段非常简单的代码:__global__voidcalcErrorOutputLayer_kernel(*arguments...*){intidx=blockIdx.x*blockDim.x+threadIdx.x;floatgradient;floatderivation;derivation=pow((2/(pow(euler,neuron_device[startIndex+idx].outputValue)+pow(euler

c++ - 搜索已排序的 float 数组

在任何数值库(MKL、Boost、GSL等)中是否有一个优化函数可以搜索排序的float数组以找到与给定float最接近的匹配项?另一个将为我解决相同问题的函数将从自定义离散概率分布中生成随机样本。 最佳答案 将(我和@betabandido的)评论包装成一个答案:您基本上需要找到2个候选元素,最接近的“上层”元素和最接近的“下层”元素(假设该元素不在列表中)。这可以使用BinarySearch来实现高效(O(logN))通过使用std::lower_bound()你可以得到较高的元素,较低的是数组中它之前的元素。比较两个候选者-最

c++ - 使用数组作为元组成员 : Valid C++11 tuple declaration?

下面的代码可以在G++4.7.2中正常编译:#includestd::tuplex;但是,使用clang++3.2会产生以下错误:错误:数组初始化器必须是一个初始化器列表。如果我从元组声明中删除float类型,错误就会消失。上面的元组声明是否有效?($CXX-std=c++11-c文件.cpp) 最佳答案 我认为标准中没有任何内容禁止您的声明。但是,一旦尝试初始化、复制、移动或分配元组,就会遇到问题,因为对于这些操作,元组的所有成员类型都必须能够用作初始化器、可复制构造、可复制分配和移动分配,分别(§20.4.2.1)。这些都不是数

从命令行运行程序时出现 C++ 错误 "failure: locale::facet::_S_create_c_locale name not valid"

我似乎对C++中的区域设置有疑问。当我从Eclipse中运行我的程序时,一切正常。但是,当我尝试从命令行运行时,我不断收到此错误:失败:locale::facet::_S_create_c_locale名称无效这是触发错误的代码://SetupUTF8filestreamstringfileName="./sz.txt";wifstreaminFileStream;try{setlocale(LC_ALL,"");inFileStream.open(fileName.c_str());inFileStream.imbue(locale(""));if(!inFileStream){re

c++ - 调试断言失败_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

我遇到了这个问题:调试断言失败!文件:f:\dd\vctools\crt_bld\self_x86\crt\dbgdel.cpp第52行表达式“_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)我的程序正确地将所有值返回到我期望的屏幕,但是这个问题让我紧张...#include#include#includeusingnamespacestd;double*wsk1;double*wsk2;double*wsk3;double*kopiowanie(double*wsk1,double*wsk2,double*wsk3);double*zaladuj(doub

c++ - 为什么 float 和 int 的 std::pow 会调用此重载?

以下内容:#includeintmain(){floatbase=2.0f;floatresult=std::pow(base,2);return0;}在打开时触发-Wconversion警告。Wandbox似乎调用了std::pow的double重载,我希望选择float重载(与int指数被转换为float)。知道他重载的人能解释一下为什么吗? 最佳答案 自C++11起,混合参数pow将任何整数参数强制转换为double。混合参数函数的返回类型始终是double除非一个参数是longdouble然后结果是longdouble。[c

c++ - std::unordered_map<int,float> 是否仍然需要散列整数才能得到值?

我想知道是否std::unordered_map仍然必须对给定的整数进行哈希处理才能得到该值,或者直接使用它。我需要每秒多次快速执行此操作,如std::hash不能保证是身份函数,我将如何重新定义它?(显然不使用STL并编写我自己的容器是可能的,但我怀疑我编写的容器是否会更有效率(可能慢得多,慢得多))。谢谢! 最佳答案 Iwouldliketoknowwhetherstd::unordered_mapstillhastohashthegiveninteger是的。Ineedtoperformthisoperationveryfas