今天我在J2EE社区,遇到一个人提问:
问题:1 / (n * (n + 1));n从1开始,一直加到1 / (19 * 20),但是在运行过程中,s不会变化
public class Test {
public static void main(String[] args) {
double s = 0.0;
int n = 1 ;
do{
s = s + 1 / (n * (n + 1));
System.out.println(s);
n = n + 1 ;
System.out.println(s + "\t" + n);
}while(n < 20);
System.out.println(s);
}
}
以下是运行结果:0.0
0.0 2
0.0
0.0 3
0.0
0.0 4
0.0
......
分析:整数之间的“/”是取整除法,以上的例子中,1 / (n * (n + 1)) 每次的结果都只能是0
如果想要得到1 / (n * (n + 1))的小数值,那么可以这样写:
public static void main(String[] args) {
double s = 0.0;
int n = 1 ;
do{
int temp = (n * (n + 1));
s =s + (double)1 / temp;//表示除完得结果是 double 类型,同样效果的写法有: 1 /( double )temp ; ( double )1 /( double )temp
System.out.println(s);
n = n + 1 ;
System.out.println(s + "\t" + n);
}while(n < 20);
System.out.println(s);
}
备注:
(1)float和double都有固定的存储的格式,这些格式都有国际标准,不是想让它们有几位小数就有几位小数的;
(2)打印格式属于数据显示问题,而不是数据存储的问题,完全可以使用一般的float或double的存数据,然后显示时固定打印2位小数,方法是使用相关的格式化数据的类(如DecimalFormat)把数值格式化成想要格式的字符串。
分享到:
相关推荐
在 Java 中,相除运算符 / 的实现方法是将两个操作数相除,并将结果作为整数商返回。例如,`int a = 13 / 5;` 语句将返回 2,因为 13 除以 5 的结果是 2. 取余运算 在 Java 中,取余运算符是 %,它可以对两个整数...
因此,表达式的计算结果为`2 / 3`,由于Java中整数相除结果为整数,故结果为0。 4. **假设x = 5,y = 10,那么x 和x >= y的逻辑值分别为:** - `true`和`false` 5. **抽象方法和最终方法的定义:** - 抽象...
` 这行代码中,根据运算优先级,先进行除法运算 `11 / 2` 结果为5(因为Java中整数相除向下取整),然后进行加法运算 `d + 5` 即 `10 + 5` 结果为15。最后乘法运算 `d *= 15` 即 `d = 10 * 15` 得到结果为150。因此...
7除以3的结果为2,因为Java中整数相除取整。 - C、2.33333:错误。结果是整数。 - D、3:错误。不是整数除法的实际结果。 **3. 以下Java程序代码片段的输出结果为(D)** ```java int sum = 19; String min = sum...
已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c),其中用(a,b)来表示a和b的最大公约数。(证明过程请参考其它资料) 例:求 15750 与27216的最大公约数。 解: ∵27216=15750×1+11466 ∴(15750,27216)=...
在编程领域,特别是Java语言中,求解两个整数的最大公约数(Greatest Common Divisor,简称GCD)是一项常见的任务。辗转相除法,又称欧几里得算法(Euclidean Algorithm),是一种高效的求解最大公约数的方法。该...
### Java编写的大整数四则运算:深入解析与理解 #### 概述 在计算机科学领域,处理大整数运算是一项挑战,特别是在超出标准整数类型(如`int`或`long`)所能表达的范围时。Java语言通过内置的`BigInteger`类提供了...
两个整数相除 Java 中的实现。 两种解决方案。 包括测试脚手架。 留下第三个解决方案作为 WORK IN PROGRESS。 如果对我的方法感兴趣,请阅读我博客中的以下帖子: 希望你喜欢。 如果您有意见或问题,请在我博客的...
在提供的压缩包文件"辗转相除法"中,很可能包含了不同编程语言(如C++, Python, Java等)的辗转相除法算法实现示例,供学习者参考和实践。通过理解并亲手实现这些代码,可以帮助你深入理解这个经典算法的运作机制,...
【程序 1】是求两个正整数 m 和 n 的最大公约数的 Java 程序。这个程序采用辗转相除法(欧几里得算法)来实现。首先,通过 `Scanner` 类从用户那里获取两个输入的正整数。然后调用 `max` 方法,该方法中首先检查 a ...
本问题的目标是设计一个函数`divide`,该函数接收两个整数参数`dividend`和`divisor`,并返回它们相除的结果。需要注意的是,在实现过程中不能使用乘法、除法或取模运算符。 #### 二、解决方案 为了解决这个问题,...
提示:Java中,两个整数相除,结果还是整数,小数部分被去掉。例如,5/4 等 于 1(而不是 1.25 ),10/4 等于2(而不是 2.5)。如果想得到有小数部分的精确结果,进 行除法运算的两个值之一必须是一个具有小数点的数值。...
在Java编程语言中,处理数学计算是常见的任务。为了应对浮点数运算可能出现的精度问题,Java提供了`java.math`包,其中包含了一些用于精确数学计算的类,比如`BigDecimal`。本文将深入探讨Java中常用的数学类以及...
程序中使用了辗转相除法(也称欧几里得算法)来求最大公约数,通过一个循环结构不断将除数和余数互换,直至余数为0,此时的除数即为最大公约数。最小公倍数可以通过两数之积除以它们的最大公约数来求得。 以上程序...
在Java中,取余操作符(%)用于计算两个整数相除的余数。例如,`i % 2` 将会返回整数`i`除以2后得到的余数。但在处理负整数时,该操作符的返回值会保留与左侧操作数相同的符号。这意味着,对于负奇数,`i % 2`的结果...
5. 取余运算符 (%): 返回两个整数相除后的余数。例如,`int a = 10; int b = 3; int c = a % b;` 这里,c的值将是1。 6. 自增运算符 (++): 用于增加变量的值。有两种形式:前缀自增(++var)和后缀自增(var++)。...
2. **整数除法**:在JAVA中,当两个整数相除时,结果会被截断为整数,丢弃小数部分。例如,`int a = 7 / 3;` 结果a将是2,而不是2.333。 3. **浮点数运算**:JAVA的浮点数运算涉及到double和float类型,它们可以...
`/`运算符用于执行除法操作,当两个整数相除时,它会返回一个浮点数结果,除非两个操作数都是整数,这时结果会被截断为整数(向下取整)。例如,`5 / 2`将返回`2`,而不是`2.5`。如果至少有一个操作数是浮点数,那么...
本文将从Java编程的角度,总结最大公约数和最小公倍数的计算方法,并探讨Java中类的继承机制。在这个实验中,我们将编写一个Parent类,包含一个计算最大公约数的方法f(int a, int b),然后编写一个Child类,继承自...
在Java中,`%`运算符用于获取两个整数相除后的余数。继续上面的例子: ```java int remainder = dividend % divisor; // remainder will be 3 ``` 这里,15除以4的余数是3,因为15减去3个4(12)之后,剩下3。 ...