我最初尝试过这个,但是没有为float64定义%运算符.
func main(){
var a float64
a = 1.23
if a%1 == 0{
fmt.Println("yay")
}else{
fmt.Println("you fail")
}
}
Run Code Online (Sandbox Code Playgroud) 我正在学习LISP,我还没有找到任何关于如何获得LISP模数的知识.有没有办法让它进入一个函数?我知道像Java这样的其他语言使用%来查找模数,但是LISP使用了什么?
我一直在测试竞争性编程的水域,我已经看过很多次提到的这个陈述:
打印结果模10 9 + 7
现在我可以弄清楚这是一种在处理非常大的数字时防止数字溢出的方法.但它是如何以及为什么有效?如果有人能解释这背后的数学推理,我将不胜感激.
我正在检查循环中的条目是否是第3次迭代,使用以下代码:
<?php for ($i = 0; $i < count($category_news); $i++) : ?>
<div class="grid_8">
<div class="candidate snippet <?php if ($i % 3 == 2) echo "end"; ?>">
<div class="image shadow_50">
<img src="<?php echo base_url();?>media/uploads/news/<?php echo $category_news[$i]['url']; ?>" alt="Image Preview" width="70px" height="70px"/>
</div>
<h5><?php echo $category_news[$i]['title']?></h5>
<p><?php echo strip_tags(word_limiter($category_news[$i]['article'], 15)); ?></p>
<?php echo anchor('/news/article/id/'.$category_news[$i]['news_id'], '>>', array('class' => 'forward')); ?>
</div>
</div>
<?php if ($i % 3 == 2) : ?>
</li><li class="row">
<?php endif; ?>
<?php endfor; ?>
Run Code Online (Sandbox Code Playgroud)
如何检查循环是否在第2次而不是第3次迭代?
我试着$i …
谁能告诉我为什么这两个模数计算产生两种不同的结果?我只需责怪别人或其他东西而不是我,因为我找不到这个错误.
public void test1()
{
int stepAmount = 100;
float t = 0.02f;
float remainder = t % (1f / stepAmount);
Debug.Log("Remainder: " + remainder);
// Remainder: 0.01
float fractions = 1f / stepAmount;
remainder = t % fractions;
Debug.Log("Remainder: " + remainder);
// Remainder: 0
}
Run Code Online (Sandbox Code Playgroud)
使用VS-2017 V15.3.5
如何在Java中找到两个长值的模数(%)?我的代码说'整数太大'后跟我想要修改的数字.我尝试将它投入很长时间但它没有用.我是否必须将其转换为BigInteger并使用余数方法?谢谢.
在使用双精度程序时,如何使用模数运算符处理Java的奇怪行为?
例如,你所期望的结果3.9 - (3.9 % 0.1)是3.9(事实上,谷歌说,我不是要疯了),但是当我在Java中运行它,我得到3.8000000000000003.
我知道这是Java存储和处理方式加倍的结果,但是有办法解决它吗?
Java模运算符%基于截断的除法(参见Wikipedia:Modulo操作).
5%3生产2(注意5/3产生1)5%(-3)生产2(注意5/(-3)产生-1)(-5)%3生产-2(注意(-5)/3产生-1)(-5)%(-3)生产-2(注意(-5)/(-3)产生1)在计算科学,给出了两个整数a和n,n> 0,有时是让唯一的整数有用r内[a,n[全等到a模n.
Java中有一个有效的泛型运算符/方法,它遵循模数的这个规范吗?
这是为了避免在需要它的每个项目中重写它...
我在stackoverflow上发现了很多关于这个问题的问题,其中大多数都混淆了不同的模数实现.如果您只是对负数的模运算结果感到不安,下面是一些基于Java %运算符的实现可能很有用.
由于我们几乎不使用负除数,因此该实现返回欧几里得或平均模数n > 0.
static int mod(int a, int n){
return a<0 ? (a%n + n)%n …Run Code Online (Sandbox Code Playgroud) 我写了一个函数,如果有必要,可以在一个数字中添加逗号和零,但是我已经陷入了模数函数.根据我的PHP:
float(877.5) % 1 == 0 //true
Run Code Online (Sandbox Code Playgroud)
不应该877.5 % 1 == 0.5?
我做错了什么,或者VBA Mod操作符实际上不适用于像双打这样的浮点值?
所以我总是假设VBA Mod操作符可以使用基于VB文档的 Doubles ,但是在试图弄清楚为什么我的舍入函数不起作用时,我发现了一些意想不到的Mod行为.
这是我的代码:
Public Function RoundUp(num As Double, Optional nearest As Double = 1)
RoundUp = ((num \ nearest) - ((num Mod nearest) > 0)) * nearest
End Function
Run Code Online (Sandbox Code Playgroud)
RoundUp(12.34)返回12而不是13如此我挖得更深一些,发现:
12.5 Mod 1返回0类型为Long的返回类型,而我的预期值为0.5,类型为Double.
结论
正如@ ckuhn203在答案中指出的那样,根据VBA规范,
模数或余数运算符将number1除以number2(将浮点数舍入为整数),并仅返回余数作为结果.
和
通常,结果的数据类型是包含Long的Byte,Byte变量,Integer,Integer变量,Long或Variant,而不管结果是否为整数.任何小数部分都被截断.
为了我的目的,我需要一个浮点模数,所以我决定使用以下内容:
Public Function FMod(a As Double, b As Double) As Double
FMod = a - Fix(a / b) * b
'http://en.wikipedia.org/wiki/Machine_epsilon
'Unfortunately, this function can only …Run Code Online (Sandbox Code Playgroud)