我知道浮点数并不完美,无论是它float还是double,但它是否意味着,当我将一个浮点数除以另一个浮点数并且除数可被除法器整除而没有提醒(如10000.0可被10.0整除) ),有可能我得到一个数字.99999999 ...在最后只有一小部分小于正确的结果.浮点数会发生这种情况吗?
我需要知道,因为我需要floor在除法之后应用函数,如果浮点除法确实不完美,那将会产生巨大的差异.
我正在使用 for 循环来显示数字 1-60:
for ($i = 0; $i <= 60; $i++)
Run Code Online (Sandbox Code Playgroud)
在循环中,我希望能够显示年数和月数。例如:
1 month
2 months
3 month
...
1 year
1 year 1 month
1 year 2 month
Run Code Online (Sandbox Code Playgroud)
等等...
我试过这个:
if (!is_float($i / 12)) {
$years = $i/12;
} else {
$years = 'no';
}
Run Code Online (Sandbox Code Playgroud)
这显示了 12 个月的 1、24 个月的 2,但不显示中间的时间。
我经常在我的代码中有这样的陈述:
(b != 0) ? a / b : a
Run Code Online (Sandbox Code Playgroud)
在速度和最佳C++实践方面,做功能更好
float divifnotzero(a,b) { ... return ... }
Run Code Online (Sandbox Code Playgroud)
或像这样的预处理器宏?
#define divifnotzero(a,b) ((b!=0)?a/b:a)
Run Code Online (Sandbox Code Playgroud) 我正在编译这段代码并在除法上得到 0
println((MarkAnalysis.failAmount/Student.studentsId.length).toDouble + " " + MarkAnalysis.failAmount + " " + Student.studentsId.length)
Run Code Online (Sandbox Code Playgroud)
我将其打印出来以确保除法不会返回零,并且
MarkAnalysis.failAmount = 14
MarkAnalysis.studentsId.length = 53
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我的结果是 0.0。
我需要创建一个递归函数,如果输入数字可以被3整除,则返回true.我知道没有递归会更简单,但是我需要创建一个这种类型的函数.
我已经创建了一个函数,但是我想知道是否可以创建一个更好的函数,因为这个函数不起作用.我认为我应该使用这个事实:如果数字的总和可以被3整除,则自然数可以被3整除.
这是我的代码:
def divThree(num):
if num==3:
return true
else:
divThree(num-3)
Run Code Online (Sandbox Code Playgroud)
编辑:我创建了一个更好的功能,但我不明白为什么如果数字可以被3整除则不会返回true.相反,如果不是,则继续最大递归错误.
def recursiveThree(num):
if num==3 or num==6 or num==9:
return true
else:
sum=0
sNum=str(num)
for i in range(0,len(sNum)):
sum=sum+int(sNum[i])
recursiveThree(sum)
Run Code Online (Sandbox Code Playgroud) 我正在通过获取单词、句子和字母的数量来构建段落难度标签......我正在尝试除以整数并获得浮点除法for example ((letter_counter / word_counter) * 100);(80 / 21) * 100 返回 400 而不是 380.9523,什么我做错了吗?感谢一些帮助!这是我的代码的示例!letter_counter, word_counter, sentence_counter = int
// Putting all together
float L = ((letter_counter / word_counter) * 100);
printf("The L value = %f\n", L);
float S = ((float) sentence_counter / word_counter) * 100;
printf("The S value = %f\n", S);
int index = round(0.0588 * L - 0.296 * S - 15.8);
printf("Grade %i\n", index);
if (index < 1)
{
printf("Before Grade 1\n");
}
else …Run Code Online (Sandbox Code Playgroud) On Intel machines, integer division requires a sequence of two instructions:
\n在以下(简单的)pow(x, n)方法实现中,完全忽略任何优化方法,我发现以下问题:
public double pow(double x, int n) {
boolean negative = n < 0;
long power = Math.abs(n);
double ans = 1.0;
for(long i = 0; i < power; i++) {
ans = ans * x;
}
return negative ? 1.0/ans: ans;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我假设对于负指数的情况,我只需计算x^n然后返回,1/(x^n)因为例如2^(-3) = 1/(2^3)
问题:
代码在以下情况下失败:
pow(2.00000, -2147483648)
输出是1.00000,而预期的正确结果是0.00000
如果我将代码更改如下:
public double pow(double x, int n) {
long power = n;
if(power < 0) {
x = …Run Code Online (Sandbox Code Playgroud) 我正在 PHP 中测试以下简单代码:
`<?php
echo 5 % 0.75;
Run Code Online (Sandbox Code Playgroud)
?>`
我看到误差除以零,而 0.75 不为零!?到底发生了什么?
我们有 3 个数字 y、x 和 n。我们被要求在 1 <= k <= n 且 k % x = y 的情况下找到最大的 k。例如:输入:1 2 100 输出:99
我可以写的是:
#include <stdio.h>
int main()
{
int y, x, n, max = 1;
scanf("%d %d %d", &y, &x, &n);
for (int k = 1; k <= n; k++)
{
if ((k % x == y) && (k >= max))
max = k;
}
printf("%d", max);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它完全正常工作。但问题是程序应该在不使用任何循环或 if 的情况下编写。有人有什么想法吗?