我有一个C++程序(使用g ++编译).我正在尝试将两个双精度数作为操作数应用于模数函数,但是我得到以下错误:
错误:类型'double'和'double'到二进制'operator%'的操作数无效
这是代码:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
Run Code Online (Sandbox Code Playgroud) 我的朋友说"mod"和"rest"之间存在差异.
如果是这样,那么C和C++的差异是什么?"%"是指C中的"mod"还是"rem"?
使用扩展代码时出现以下错误,我不确定他们是否要求使用其他运算符或根据Internet搜索修改表达式中的值.
错误:%不可用:改为使用truncatingRemainder
扩展代码:
extension CMTime {
var durationText:String {
let totalSeconds = CMTimeGetSeconds(self)
let hours:Int = Int(totalSeconds / 3600)
let minutes:Int = Int(totalSeconds % 3600 / 60)
let seconds:Int = Int(totalSeconds % 60)
if hours > 0 {
return String(format: "%i:%02i:%02i", hours, minutes, seconds)
} else {
return String(format: "%02i:%02i", minutes, seconds)
}
}
}
Run Code Online (Sandbox Code Playgroud)
设置分钟和秒变量时会发生错误.
我的游戏需要移动一定的角度.为此,我通过sin和cos得到角度的矢量.不幸的是,罪和cos是我的瓶颈.我相信我不需要这么精确.是否有一个C sin&cos和查找表的替代品,它非常精确但速度非常快?
我发现了这个:
float Skeleton::fastSin( float x )
{
const float B = 4.0f/pi;
const float C = -4.0f/(pi*pi);
float y = B * x + C * x * abs(x);
const float P = 0.225f;
return P * (y * abs(y) - y) + y;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎不起作用.当我使用这个罪而不是C罪时,我会得到明显不同的行为.
谢谢
为什么模数计算2.4乘0.8返回0.8?它不应该返回0吗?
它发生在PHP,via fmod和JavaScript中%.
即使是使用此操作的Google研究也会失败:http://www.google.com/search? q = 2.4 + mod +0.8
可能重复:
为什么模数除法(%)只适用于整数?
此代码在C和C++中不起作用,但在C#和Java中起作用:
float x = 3.4f % 1.1f;
double x = 3.4 % 1.1;
Run Code Online (Sandbox Code Playgroud)
此外,在Python中为reals定义了除法余数.
在C和C++中,没有为浮点数和双精度数定义此操作的原因是什么?
这是一个相当长的一周,所以如果我很厚,请原谅我.
我有一些代码:
float someFloat = 0;
//....do some stuff to someFloat
//....
if( someFloat % 1)
{
//take some action
}
Run Code Online (Sandbox Code Playgroud)
我收到编译器错误: error: invalid operands to binary %
假设编译器不是药物,这有什么不对吗?
编辑:顺便说一句,我实际想要做的是检测非整数值并向上舍入.我应该做的是调用roundf(我想检查返回是否小于操作数,然后如果是这样增加,请注意我们已经舍入)
我正在研究一个涉及计时的c ++程序,在这个程序中,我必须确定一个时间的模数,以毫秒(一个长)为单位.通常会将long转换为double并使用fmod或将double转换为int/long然后使用%.然而,这不会给我我需要的准确性.有没有办法轻松处理这个?
所以我正在寻找的是:
long a = 9999999;
double b= 1.42 ;
double answer = a % b; <<< how do I do this?
Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
int main(void)
{
float with;
float inacbal;
float acleft;
scanf("%f",&with);
scanf("%f",&inacbal);
if((with%5)==0)//error here
{
acleft=inacbal-with-0.50;
printf("%f",acleft);
}
else
printf("%f",inacbal);
return 0;
}
Run Code Online (Sandbox Code Playgroud) #include<stdio.h>
#include<conio.h>
void main()
{
float n, r;
printf("\n enter a number");
scanf("%d",&n);
r=n%10;
n/=10;
printf("%d %d",n, r );
getch();
}
Run Code Online (Sandbox Code Playgroud)
此代码在编译时显示错误.我想知道:我们可以对浮点值执行mod操作吗?