Ben*_*Ben 87 java math floating-point println long-integer
这是一个基本问题,但我找不到答案.我已经研究了浮点运算和其他一些主题,但似乎没有任何东西可以解决这个问题.我确定我的术语错了.
基本上,我想要两个数量 - 完成和总数 - 并将它们分成一个百分比(已经完成了多少).数量是longs.这是设置:
long completed = 25000;
long total = 50000;
System.out.println(completed/total); // Prints 0
Run Code Online (Sandbox Code Playgroud)
我已经尝试将结果重新分配给双 - 它打印0.0.我哪里错了?
顺便提一下,下一步是将这个结果乘以100,一旦这个小障碍被推翻,我认为应该很容易.
顺便说一句,这里没有作业,只是普通的老字号(今天可能编码过多).
Oli*_*rth 130
转换输出为时已晚; 计算已经在整数运算中进行.您需要将输入转换为double:
System.out.println((double)completed/(double)total);
Run Code Online (Sandbox Code Playgroud)
请注意,您实际上不需要转换这两个输入.只要其中一个是double,另一个将被隐式转换.但我喜欢两者兼顾,以保持对称性.
har*_*old 10
你甚至不需要双打.先乘以100 然后再除.否则结果将小于1并被截断为零,如您所见.
编辑:或者如果溢出可能,如果它会溢出(即被除数大于922337203685477581),则将除数先除以100.
In Java
Integer/Integer = Integer
Integer/Double = Double//Either of numerator or denominator must be floating point number
1/10 = 0
1.0/10 = 0.1
1/10.0 = 0.1
Run Code Online (Sandbox Code Playgroud)
只需键入其中任何一个即可。