如何将INT值转换为保留两位小数(2dp)的Decimal数值?
如何将整数转换为保留两位小数的Decimal类型(提取最后两位作为小数部分)
核心高效方案是直接通过数学运算将整数除以100,再转换为Decimal类型,这种方法比字符串操作快得多,尤其适合处理大量数据。
Python 实现
利用decimal.Decimal类型避免浮点数精度问题,直接执行除法:
from decimal import Decimal def int_to_two_dp_decimal(num: int) -> Decimal: return Decimal(num) / Decimal(100) # 测试示例 print(int_to_two_dp_decimal(12345)) # 输出 Decimal('123.45') print(int_to_two_dp_decimal(67800)) # 输出 Decimal('678.00')
C# 实现
强制转换为decimal后执行除法,原生支持精确小数运算:
using System; public class IntToDecimalConverter { public static decimal Convert(int num) { return (decimal)num / 100; } public static void Main() { Console.WriteLine(Convert(12345)); // 输出 123.45 Console.WriteLine(Convert(9010)); // 输出 90.10 } }
关键注意事项
- 避免使用字符串拆分拼接的方式(比如截取最后两位再拼接成小数),数学运算的性能远高于字符串操作,处理大量数据时差距尤为明显。
- Decimal类型本身会保留精确的数值,若需要固定显示两位小数(如报表输出),可通过格式化字符串实现,但底层数值无需额外处理。
内容的提问来源于stack exchange,提问作者kdawg
相关产品推荐
相关产品推荐

