c++将两个浮点数相除得到int
c++ dividing two floats results in an int
我创建了一个小程序,它应该使用c++中莱布尼茨公式的前26次迭代来计算圆周率,只是想看看它是否可行。当我运行代码时,它输出的是4而不是浮点数。发生了什么,我该如何解决?下面是代码:
#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
float a = 1/1;
float b = 1/3;
float c = 1/5;
float d = 1/7;
float e = 1/9;
float f = 1/11;
float g = 1/13;
float h = 1/15;
float i = 1/17;
float j = 1/19;
float k = 1/21;
float l = 1/23;
float m = 1/25;
float n = 1/27;
float o = 1/29;
float p = 1/31;
float q = 1/33;
float r = 1/35;
float s = 1/37;
float t = 1/39;
float u = 1/41;
float v = 1/43;
float w = 1/45;
float x = 1/47;
float y = 1/49;
float z = 1/51;
float a1 = a-b+c-d+e-f+g-h+i-j+k-l+m-n+o-p+q-r+s-t+u-v+w-x+y-z;
float b1 = a1*4;
cout << b1;
}
是的,我知道有更简单的方法来做到这一点,但这只是一个概念的证明。
使用
float b = 1/3;
赋值操作符的RHS使用整数除法求值,结果为0。除a
为1外,其他变量均为0。
为了避免这种情况,请使用
float b = 1.0f/3;
或
float b = 1.0/3;
另一种方法是使用强制转换
float a = (float)1/1; // C-style cast
或
float a = float(1)/1;
相关文章:
- 使用 int 指针的浮点数的位表示形式
- 将浮点数除以 int 总是给出浮点数吗?C++
- 为什么 int 和浮点数的总和是 int?
- 使用按位 AND 和 popcount 而不是实际的 int 或浮点数乘法进行大 (0,1) 矩阵乘法
- 将 int 128 除法提升为浮点数
- 将大 int 转换为浮点数,而不舍入 c++
- 在 UDP 套接字上发送结构、浮点数和 int C++
- 给定一个整数 M,使得 (int)C < M 的最大浮点数 C 是多少?
- 将浮点数转换为 int,带和不带强制转换
- 将浮点数转换为 int,或将 int 强制转换为浮点数
- 如何将数组的一部分从 int 转换为浮点数并将值设置为另外两个数组
- 如何获取模板的类型,如模板<类型名 T>,并检查 T 是 int 还是浮点数或类
- 从无符号 int 转换为浮点数时出错
- 为什么浮点数和 int 具有如此不同的最大值,即使它们是相同的位数?
- 如何将转换 int 除法键入为浮点数
- 将 int 转换为浮点数
- 为什么int指针会给我一个浮点数
- c++将两个浮点数相除得到int
- 在c/++中将浮点数转换为两个int
- 将 Object int 数据成员转换为浮点数并划分会将奇怪的数据 cout 附加到控制台