我有一个代表形状的类.Shape类有一个名为Angle的属性.我希望此属性的setter自动将值包装到范围[0,359]中.
不幸的是,简单_Angle = value % 360;只适用于正数.在C#中-40 % 360 == -40.谷歌calc 以我想要的方式做到了.值应为320.
什么是C#中最优雅的解决方案?
这是我到目前为止最好的方式:
public double Angle {
get { return _Angle; }
set {
if ( value >= 0 ) {
_Angle = value % 360;
}
else {
_Angle = value - (360 * ((int)(value / 360) - 1));
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
谢谢你们,我现在有:
public double Angle {
get { return _Angle; }
set {
_Angle = (value % 360) + ((value < 0) …Run Code Online (Sandbox Code Playgroud) 如何处理C#中的大整数?
我有一个函数,它会给我除数的乘积:
private static int GetDivisorProduct(int N, int product)
{
for (int i = 1; i < N; i++)
{
if (N % i == 0)
{
Console.WriteLine(i.ToString());
product *= i;
}
}
return product;
}
Run Code Online (Sandbox Code Playgroud)
调用函数是 GetDivisorProduct(N, 1)
如果结果大于4位,我应该只获得最后4位数.(例如,如果我输入957,则仅在修剪掉最后四个值后输出为7493.实际结果为876467493.).
其他样本输入:如果我给10000,则输出为0.
该BigInteger类别已经从C#库中删除!
我怎样才能得到最后四位数字?
我很想理解mod操作背后的逻辑,因为我知道可以执行位移操作来执行不同的操作,例如位移到乘法.
我可以看到它完成的一种方法是通过递归算法继续划分,直到你不能再分裂,但这似乎并不高效.
任何想法都会有所帮助.提前致谢!
我正在进行加密练习,我正在尝试计算(2 n -1)mod p,其中p是素数
这样做的最佳方法是什么?我正在使用C,因此当n很大时,2 n -1变得太大而无法保持
我遇到了等式(a*b)modp =(a(bmodp))modp,但我不确定这适用于这种情况,因为2 n -1可能是素数(或者我不知道如何分解这个)
非常感谢.
我想编写一个sass mixin,从1到100每5步输出一个特定的类.但我不能让modulo运算符以某种方式工作.根本没有创建类.
这是我的代码
@mixin flex_percentage($className) {
@for $i from 1 through 100 {
@if $i % 5 != 0 {
.#{$className}#{$i} {
width: $i * 1%;
}
}
}
}
@include flex_percentage(p);
Run Code Online (Sandbox Code Playgroud)
我也尝试了$i mod(5)但是它输出了所有100个类.
我希望有一个类似的输出
.p5 {
width: 5%;
}
.p10 {
width: 10%;
}
.p15 {
width: 15%;
}
Run Code Online (Sandbox Code Playgroud) CMD无法使用set /a?来评估负数模数?
90 % 7正确地等于批量为6,但是-90 % 7给出-6而不是1.
我认为它可能一直在评估-(90 % 7),但似乎并非如此,因为(-90) % 7也给出了-6.
h:\uprof>set /a -90%7
-6
h:\uprof>set /a (-90)%7
-6
Run Code Online (Sandbox Code Playgroud)
那么 - 这是CMD设置/模数运算符的限制吗?
我需要生成大约N = 1亿个密钥的哈希密钥.从我的研究看来,murmur3(MurmurHash3_x86_32,见murmur3 hash)将是最快的散列函数,具有最佳延迟和足够小的碰撞率.我面临的问题是该函数返回键为 void *.更具体地说,模板是:
void MurmurHash3_x86_32 (const void *key, int len, uint32_t seed, void *out);
由于我的哈希表大小将小于它可以生成的最大哈希,我需要将它放入表范围[0,N-1].最简单的解决方案似乎是使用%运算符.但由于众所周知这是一个缓慢的操作员,我想知道是否有更快的方法来解决问题.
我发现一个有趣的建议是否有替代在C/C++中使用%(模数)?在StackOverflow本身.它暗示了"两个人的力量,以下作品(假设两个补语表示)":
return i & (n-1);
我的问题是,在较新的CPU上,它有时(或者大部分时间都是这样?),由于多路缓存线,性能会在大约2 ^ n,IIRC附近降低.(此链接提供有关插入大内存的说明,第3.5部分:Google sparsehash!).
目前,murmur3的优势似乎因硬件相关问题和%运营商的低效率而无效.由于性能是一个约束,我要求低延迟和更快的解决方案,即使它不是MurmurHash3_x86_32.
我使用整数和分数mod 10的乘法来解决这个加密问题.
这是等式:
7 * (4/11) mod 10 =?
Run Code Online (Sandbox Code Playgroud)
我知道我应该将它转换为整数,因为mod运算符不适用于分数,但我无法想象这个.明显,
7 * (4/11) = 28/11,
Run Code Online (Sandbox Code Playgroud)
但我不能得到一个分数的mod 10.教练想要确切的答案,而不是小数.任何帮助将不胜感激!
我尝试过这个 -
x=[2,3,4,7,9]
count=0
for i in x:
if i%2:
count=count+1
print count
Run Code Online (Sandbox Code Playgroud)
为什么计数3而不是2,因为i%2仅满足“2 和 4”?
我知道对于无符号整数,如果除数是 2 的幂,我可以用位掩码替换模运算。对于浮点数,是否有任何数字具有类似的属性?也就是说,是否有任何数字n可以f mod n比一般情况更有效地计算,而不必使用位掩码?
当然,除了一个。 脑部衰竭
编辑:澄清一下,f是任何浮点数(在运行时确定),
n是任何格式的任何编译时常量,我希望结果是浮点数。
modulo ×10
c ×4
c# ×2
batch-file ×1
biginteger ×1
c++ ×1
cmd ×1
css ×1
fmod ×1
hash ×1
if-statement ×1
loops ×1
low-latency ×1
mixins ×1
overflow ×1
primes ×1
python ×1
python-2.7 ×1
sass ×1