我有一个十进制值34.3287332我怎么能得到像.3287332这样的值的分数请任何一个帮助(我可以将其转换为字符串并得到分数。但我不需要)
答案 0 :(得分:5)
答案 1 :(得分:2)
我只需获取整个值,然后得到余数:
decimal total = /* get value from database */;
decimal fraction = decimal.Remainder(total, 1m);
(可能有更有效的方法来获得剩余部分,但这很简单。)
虽然您也可以在SQL中执行此操作,但是当您想要使用LINQ to SQL或类似的东西获取值时,这可能不太好用 - 我更喜欢将值操作放在.NET代码而不是SQL中,除非它影响结果或表现。
答案 2 :(得分:2)
请注意,上面的FLOOR建议无法正确处理否定号码;你需要ABS(my_float_value) - FLOOR(ABS(my_float_value))
才能得到正确的答案。
如果你发现自己使用的是SQLite后端,你会发现它没有FLOOR功能,而且“my_float_value%1”技巧也无效。然后,您可以应用CAST来获得等效功能:
ABS(my_float_value) - CAST(ABS(my_float_value) AS INTEGER)