C#算术运算符:整数相除如何显示小数部分?
C#整数除法保留15位小数的实现方式
问题根源在于:C#中两个int类型执行除法时,会触发整数除法逻辑——直接舍弃小数部分,只返回整数商。所以你的代码里a / b先得到整数8,再赋值给decimal类型变量,自然无法保留小数。
要得到带小数的结果并保留15位小数,需要分两步处理:
1. 触发浮点/高精度除法
先将至少一个操作数转换为非整数类型(比如double或decimal),让除法运算变为浮点除法:
- 如果需要和目标结果
8.333333333333334一致(这是double类型的近似值),可以转double:int a = 25; int b = 3; double div = (double)a / b; - 如果需要更高精度的十进制表示(结果会是
8.3333333333333333333),可以转decimal:int a = 25; int b = 3; decimal div = (decimal)a / b;
2. 格式化输出为15位小数
使用字符串格式化语法,强制保留15位小数:
- 对于
double类型的变量,格式化后会得到你需要的8.333333333333334:Console.WriteLine("Quotient: {0:F15}", div); // 或者用字符串插值: Console.WriteLine($"Quotient: {div:F15}"); - 对于
decimal类型,格式化后会输出8.333333333333333(因为decimal精度更高,不会出现double的末尾近似值)。
完整示例代码(对应目标结果)
int a = 25; int b = 3; double div = (double)a / b; Console.WriteLine("Quotient: {0:F15}", div); // 输出 Quotient: 8.333333333333334
内容的提问来源于stack exchange,提问作者ACD
相关产品推荐
相关产品推荐

