十进制值在c#中的第一个小数处停止

本文关键字:小数 第一个 十进制 | 更新日期: 2023-09-27 18:01:08

我正在试图弄清楚为什么我的十进制值没有正确存储。这是一个示例方程:

//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……知道吗?

十进制值在c#中的第一个小数处停止

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

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

double foo = 120d / 175;

你也可以用decimal来做到这一点,如果这是你真正想要使用的:

decimal foo = 120m / 175;

一旦你从第一个方程中正确地捕捉到了十进制值,这一部分应该会很好地工作:

decimal bar = foo * 100;