我有这个简单的计算,返回零无法弄明白
decimal share=(18 / 58)*100;
答案 0 :(得分:47)
你正在使用整数。尝试对计算中的所有数字使用小数。
decimal share = (18m / 58m) * 100m;
答案 1 :(得分:23)
18 / 58
是整数除法,结果为0。
如果要进行十进制除法,则需要使用十进制文字:
decimal share = (18m / 58m) * 100m;
答案 2 :(得分:8)
由于有些人从计算结果为0的任何线程链接到这个,我将其添加为解决方案,因为并非所有其他答案都适用于案例场景。
需要对各种类型进行计算以获得该类型作为结果的概念适用,但上面仅显示“十进制”并使用它的简短形式如// declare and define initial variables.
int x = 0;
int y = 100;
// set the value of 'x'
x = 44;
// Results in 0 as the whole number 44 over the whole number 100 is a
// fraction less than 1, and thus is 0.
Console.WriteLine( (x / y).ToString() );
// Results in 0 as the whole number 44 over the whole number 100 is a
// fraction less than 1, and thus is 0. The conversion to double happens
// after the calculation has been completed, so technically this results
// in 0.0
Console.WriteLine( ((double)(x / y)).ToString() );
// Results in 0.44 as the variables are cast prior to calculating
// into double which allows for fractions less than 1.
Console.WriteLine( ((double)x / (double)y).ToString() );
作为变量之一计算
<ul id="cordinates">
<li id="lat" data-value="52.0193">52.0193</li>
<li id="lon" data-value="23.2413">23.2413</li>
</ul>
答案 3 :(得分:3)
因为数字是整数而你执行整数除法。
18 / 58
在整数除法中为0
。
答案 4 :(得分:2)
每当我遇到这种情况时,我只是将分子向上翻。
double x = 12.0 / 23409;
decimal y = 12m / 24309;
Console.WriteLine($"x = {x} y = {y}");
答案 5 :(得分:1)
十进制份额=(18 * 100)/ 58;
答案 6 :(得分:1)
double res= (firstIntVar * 100f / secondIntVar) / 100f;
分割数字时我使用 double 或 decimal ,否则我得到 0 ,使用此代码即使 firstIntVar && secondIntVar 是 int 它也会返回预期的答案