我需要一个简单的浮点舍入函数,因此:
double round(double);
round(0.1) = 0
round(-0.1) = 0
round(-0.9) = -1
Run Code Online (Sandbox Code Playgroud)
我能找到ceil()和floor()在math.h中-但不是round().
它是以另一个名称存在于标准C++库中,还是缺少?
这两种方法在C中的效率更高?怎么样:
pow(x,3)
Run Code Online (Sandbox Code Playgroud)
与
x*x*x // etc?
Run Code Online (Sandbox Code Playgroud) 我正在寻找pow(real, real)x86汇编中的实现.另外,我想了解算法的工作原理.
运行以下代码行时:
int i,a;
for(i=0;i<=4;i++)
{
a=pow(10,i);
printf("%d\t",a);
}
Run Code Online (Sandbox Code Playgroud)
我很惊讶地看到输出,它出来了 1 10 99 1000 9999而不是1 10 100 1000 10000.
可能的原因是什么?
注意
如果您认为它是浮点不准确,在上面的for循环中i = 2,存储在变量中的值a是99.
但如果你写的话
a=pow(10,2);
Run Code Online (Sandbox Code Playgroud)
现在a的价值出现了100.怎么可能?
最近我写了一段代码:
const int sections = 10;
for(int t= 0; t < 5; t++){
int i = pow(sections, 5- t -1);
cout << i << endl;
}
Run Code Online (Sandbox Code Playgroud)
结果是错误的:
9999
1000
99
10
1
Run Code Online (Sandbox Code Playgroud)
如果我只使用这个代码:
for(int t = 0; t < 5; t++){
cout << pow(sections,5-t-1) << endl;
}
Run Code Online (Sandbox Code Playgroud)
问题不再发生:
10000
1000
100
10
1
Run Code Online (Sandbox Code Playgroud)
有没有人给我解释?非常感谢你!
我在这里看到了各种各样的答案,描述了powC 中函数的奇怪行为.
但我在这里有一些不同的问题.
在下面的代码我初始化int x = pow(10,2)和int y = pow(10,n) (int n = 2).
在第一种情况下,当我打印它显示的结果时100 ,在另一种情况下它出来了99.
我知道pow返回double它会在存储时被截断int,但我想问为什么输出会有所不同.
CODE1
#include<stdio.h>
#include<math.h>
int main()
{
int n = 2;
int x;
int y;
x = pow(10,2); //Printing Gives Output 100
y = pow(10,n); //Printing Gives Output 99
printf("%d %d" , x , y);
}
Run Code Online (Sandbox Code Playgroud)
Output : 100 99
为什么输出结果不同.?
我的gcc版本是4.9.2
更新:
代码2
int main()
{
int …Run Code Online (Sandbox Code Playgroud) 我pow在C中使用函数并将返回值存储为整数类型.请参阅下面的代码段:
for (i = 0; i < 5; i++){
val = (int)pow(5, i);
printf("%d, ", val);
}
Run Code Online (Sandbox Code Playgroud)
这里i,val是整数,输出是1, 5, 24, 124, 624.我相信这是因为浮点数25被视为24.99999 ...在分配给整数时会向下舍入到24.
如果我仍然需要将返回值存储在int中,我怎么能通过这个?
我正在制作一个简单的计算器,你可以选择一个功能,然后2个输入来得到你的答案.这是一个简洁的小程序,除了权力之外,一切都运行顺畅.每个号码都正常工作.
但根据这个:5^2=24, 5^3=624.我在用pow(number1,number2).
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
for(;;){
int func;
int number1;
int number2;
cout << "Input your function (+,-,x,/,Square,Power)(1,2,3,4,5,6) ";
cin >> func;
cout << "input #1: ";
cin >> number1;
cout << "input #2: ";
cin >> number2;
if (func==1){
int answer;
answer = number1 + number2;
cout << number1 << " + " << number2 << " = " << answer << endl;
}
else {
if (func==2){ …Run Code Online (Sandbox Code Playgroud)