C# 如何四舍五入到最接近的整数
我在一个可为空的DateTime上调用ToMinutes(),它返回一个double,但如果它不是空的,我希望将它转换为最接近的整数 示例:从C# 如何四舍五入到最接近的整数,c#,datetime,nullable,minute,C#,Datetime,Nullable,Minute,我在一个可为空的DateTime上调用ToMinutes(),它返回一个double,但如果它不是空的,我希望将它转换为最接近的整数 示例:从1534488.74496255到1534489 我怎样才能做到这一点呢?这可能是你想要的东西吗?这将返回最接近的较低整数 int timeAsWholeMinute = (int) Math.Floor(timeInMinutes); 或者,如果只需要最接近的整数: int timeAsWholeMinute = (int) Math.Round(ti
1534488.74496255
到1534489
我怎样才能做到这一点呢?这可能是你想要的东西吗?这将返回最接近的较低整数
int timeAsWholeMinute = (int) Math.Floor(timeInMinutes);
或者,如果只需要最接近的整数:
int timeAsWholeMinute = (int) Math.Round(timeInMinutes);
当你想转一圈时,只需转一圈:
double source = 1534488.74496255;
// if you want double (i.e. floating point result)
double result = Math.Round(source);
// if you want integer outcome (and source is positive)
int minutes = (int) (source + 0.5);
// if you want integer outcome (general case)
int minutes = (int) (source > 0 ? source + 0.5 : source - 0.5);
那些是~1534489毫秒?哪个是25.57481667分钟,那么是26分钟?或者该值代表什么?或者要将字符串“1534488.74496255”转换为1534489(整数)分钟?是字符串吗?你想要哪种型号的?哪种格式?什么文化?示例?
Math.Round(源代码)
?或者(int)(源代码+0.5)
?这个数字代表什么?你能告诉我们你期望得到多少分钟的回报吗?@ifelabolz你能至少在你的问题中解释一下你是如何得到这个DateTime
对象的吗?你怎么知道它能容纳这么多分钟?我似乎找不到这些琐碎的东西。谢谢,这很有效,我没有意识到ToMinutes()返回了双精度。:)@伊夫·拉波尔兹:不客气!请你也修改一下你的问题好吗?我的意思是,你有DateTime
字段,然后你调用ToMinutes()
,它返回double
,返回的double
应该被四舍五入。(int)(source+0.5)
当你有负数时会做坏事(int)Math.Round(source)
似乎是一个更好的选择。@Jim Mischel:谢谢!接得好!我已经编辑了答案