草庐IT

img_float

全部标签

c++ - 为什么将 ‘float**’ 转换为 ‘const float**’ 时出现错误?

我有一个接收float**作为参数的函数,我尝试将其更改为采用constfloat**。编译器(g++)不喜欢,发出:从‘float**’到‘constfloat**’的无效转换这对我来说毫无意义,我知道(并已验证)我可以将char*传递给采用constchar*的函数,所以为什么不使用constfloat**? 最佳答案 见WhyamIgettinganerrorconvertingaFoo**→constFoo**?BecauseconvertingFoo**→constFoo**wouldbeinvalidanddangero

c++ - 当通过 C/C++ 中的 double 传输时,是否保证保留 float ?

假设IEEE-754一致性,当通过double传输时,float是否保证被保留?换句话说,是否总是满足以下断言?intmain(){floatf=some_random_float();assert(f==(float)(double)f);}假设f可以获取IEEE定义的任何特殊值,例如NaN和Infinity。根据IEEE的说法,是否存在这样的情况:assert会被满足,但在通过double传输后没有保留确切的位级表示?代码片段在C和C++中均有效。 最佳答案 您甚至不需要假设IEEE。C89在3.1.2.5中说:Thesetof

c++ - 当通过 C/C++ 中的 double 传输时,是否保证保留 float ?

假设IEEE-754一致性,当通过double传输时,float是否保证被保留?换句话说,是否总是满足以下断言?intmain(){floatf=some_random_float();assert(f==(float)(double)f);}假设f可以获取IEEE定义的任何特殊值,例如NaN和Infinity。根据IEEE的说法,是否存在这样的情况:assert会被满足,但在通过double传输后没有保留确切的位级表示?代码片段在C和C++中均有效。 最佳答案 您甚至不需要假设IEEE。C89在3.1.2.5中说:Thesetof

c++ - C++ 标准是否对 float 的表示做了任何规定?

对于类型Tstd::is_floating_point::value是true,C++标准是否在T的方式上指定了任何内容?应该实现吗?例如,T甚至遵循符号/尾数/指数表示?还是可以完全任意? 最佳答案 来自N3337:[basic.fundamental/8]:Therearethreefloatingpointtypes:float,double,andlongdouble.Thetypedoubleprovidesatleastasmuchprecisionasfloat,andthetypelongdoubleprovides

c++ - C++ 标准是否对 float 的表示做了任何规定?

对于类型Tstd::is_floating_point::value是true,C++标准是否在T的方式上指定了任何内容?应该实现吗?例如,T甚至遵循符号/尾数/指数表示?还是可以完全任意? 最佳答案 来自N3337:[basic.fundamental/8]:Therearethreefloatingpointtypes:float,double,andlongdouble.Thetypedoubleprovidesatleastasmuchprecisionasfloat,andthetypelongdoubleprovides

c++ - 与 float 和 float 文字相比的奇怪输出

floatf=0.7;if(f==0.7)printf("equal");elseprintf("notequal");为什么输出不等于?为什么会这样? 最佳答案 这是因为在你的陈述中if(f==0.7)0.7被视为double。尝试0.7f以确保该值被视为float:if(f==0.7f)但正如Michael在下面的评论中所建议的,您永远不应该测试浮点值是否完全相等。 关于c++-与float和float文字相比的奇怪输出,我们在StackOverflow上找到一个类似的问题:

c++ - 与 float 和 float 文字相比的奇怪输出

floatf=0.7;if(f==0.7)printf("equal");elseprintf("notequal");为什么输出不等于?为什么会这样? 最佳答案 这是因为在你的陈述中if(f==0.7)0.7被视为double。尝试0.7f以确保该值被视为float:if(f==0.7f)但正如Michael在下面的评论中所建议的,您永远不应该测试浮点值是否完全相等。 关于c++-与float和float文字相比的奇怪输出,我们在StackOverflow上找到一个类似的问题:

c++ - 如何在 C++ 中快速解析空格分隔的 float ?

我有一个包含数百万行的文件,每行有3个float,以空格分隔。读取文件需要很多时间,所以我尝试使用内存映射文件读取它们,结果发现问题不在于IO的速度,而在于解析的速度。我目前的解析是获取流(称为文件)并执行以下操作floatx,y,z;file>>x>>y>>z;StackOverflow中有人推荐使用Boost.Spirit,但我找不到任何简单的教程来解释如何使用它。我正在尝试找到一种简单有效的方法来解析如下所示的行:"134.323545.873425"我将非常感谢一些帮助。我想用strtok来拆分它,但是我不知道如何将字符串转换为float,我不太确定这是最好的方法。我不介意解决

c++ - 如何在 C++ 中快速解析空格分隔的 float ?

我有一个包含数百万行的文件,每行有3个float,以空格分隔。读取文件需要很多时间,所以我尝试使用内存映射文件读取它们,结果发现问题不在于IO的速度,而在于解析的速度。我目前的解析是获取流(称为文件)并执行以下操作floatx,y,z;file>>x>>y>>z;StackOverflow中有人推荐使用Boost.Spirit,但我找不到任何简单的教程来解释如何使用它。我正在尝试找到一种简单有效的方法来解析如下所示的行:"134.323545.873425"我将非常感谢一些帮助。我想用strtok来拆分它,但是我不知道如何将字符串转换为float,我不太确定这是最好的方法。我不介意解决

c++ - Arduino sprintf float 未格式化

我有这个arduino草图,chartemperature[10];floattemp=10.55;sprintf(temperature,"%fF",temp);Serial.println(temperature);温度输出为?F关于如何格式化这个float有什么想法吗?我需要它是一个字符字符串。 最佳答案 由于某些性能原因,%f未包含在Arduino的sprintf()实现中。更好的选择是使用dtostrf()-将浮点值转换为C风格的字符串,方法签名如下所示:char*dtostrf(doubleval,signedcharw