c# - 在 C# 中,十进制值在第一个小数点处停止

标签 c# math double decimal

我想弄清楚为什么我的十进制值没有被正确存储。这是一个示例等式:

//Comes up as 0.0
double foo = 120 / 175;
// Want to convert to look like a percent but comes up as 0.0 also
double bar = foo * 100;

我知道 120/175 是 0.6857...知道吗?

最佳答案

您正在对两个整数执行算术运算,因此结果是一个整数。在将结果存储到 foo 之前,您会丢失结果的小数部分。

您应该先将其中一个值转换为 double:

double foo = 120d / 175;

你也可以用 decimal 来做到这一点,如果那是你实际尝试使用的:

decimal foo = 120m / 175;

一旦您从第一个等式中正确获取了小数值,这部分应该可以正常工作:

decimal bar = foo * 100;

关于c# - 在 C# 中,十进制值在第一个小数点处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23419676/

相关文章:

c# - 如何从sql中的每组中选择20个随机问题?

c# - 存储库是否应该在 Entity Framework 1.0 中使用相同的上下文实例

c# - SQL Server 2008 R2 的 C# CLR 中的 newtonsoft.json 解析器 - 如何部署?

python - 在 scipy/numpy 中求解具有已知 y 的多项式的 x 值

具有集成的 C 数学库?

java - 为什么 Java 会给我不寻常的 double 算术运算结果?

c# - 为什么 AddAfterSelf 在与 SelectToken 一起使用时返回 'JProperty cannot have multiple values'?

java - 与圆的弹性碰撞

c# - 除以零没有错误?

c++ - C - 对双变量求和会根据其编写方式给出不同的输出