【问题标题】:Coverting INT to decimal following mm.ss format按照 mm.ss 格式将 INT 转换为十进制
【发布时间】:2012-06-07 15:58:06
【问题描述】:

我可能在这里真的很愚蠢,但我的大脑一片空白。

我有一个滑块(它使用 Int32 值),但我想用它来选择音乐歌曲中的位置 (mm.ss)

我还想将滑块显示的值输出到其上方的标签中,以便更容易查看滑块设置的内容。

大家有什么建议吗?

我想尝试将 int 值转换为小数,然后除以 60。

顺便说一句,我正在用 C# 做这个。

【问题讨论】:

  • 感谢大家的时间和帮助。 Jon Skeet 你的方法效果很好。除了 ToString() 不喜欢参数之外,它抱怨没有接受任何参数,但没有 @"mm\.ss" 它仍然工作得很好。

标签: c# math type-conversion


【解决方案1】:

int 值代表什么?如果是歌曲的秒数,你应该使用:

TimeSpan time = TimeSpan.FromSeconds(seconds);
string text = time.ToString(@"mm\.ss");

使用decimal 将是一个非常糟糕的主意 - 具有秒数的格式与小数分钟数不同。例如,10.50 分钟作为分钟的小数是 10 分 30 秒,而不是 10 分 50 秒,据我所知,这正是你想要的。

TimeSpan 是在 .NET 中表示持续时间的自然方式...这就是为什么支持 formatting in minutes and seconds 的类型。

【讨论】:

    【解决方案2】:

    将其转换为十进制不会以您想要的方式显示。例如,四分半钟将显示为 4:50,而不是 4:30。

    将时间分成分钟和秒,并格式化:

    int minutes = time / 60;
    int seconds = time % 60;
    string formatted = minutes.ToString() + ":" + seconds.ToString("00");
    

    【讨论】:

      【解决方案3】:

      您应该在内部将歌曲的长度表示为秒(可以保存在 int 中)。要实际显示它,您可以使用song_length / 60 来获取分钟(这称为整数除法,它返回结果并丢弃分数,例如100/60 = 1)。

      之后,您可以通过song_length % 60(% 是取模运算符)获取秒数。

      编辑:没有看到 c# 标签。 Jon Skeet 的答案在 c# 中更合适。

      【讨论】:

        【解决方案4】:

        编辑:我误解了问题的范围,但我会留下这个以防万一。

        1. 以秒为单位存储曲目的总长度。
        2. 将滑块的位置计算为最大可能滑块值的一部分。
        3. 将轨道长度(以秒为单位)乘以在 2 中获得的小数值)。这以秒为单位给出了从轨道开始的偏移量。
        4. 格式化 3) 中的值以供显示。

        这是一个人为的例子来说明这个过程:

        int maxSliderValue = 100;
        int sliderValue = 18;
        int trackLengthInSeconds = 248;
        
        float sliderFraction = ((float)sliderValue)/((float)maxSliderValue);
        int offsetInSeconds = Convert.ToInt32(Math.Floor(trackLengthInSeconds * sliderFraction));
        TimeSpan offset = TimeSpan.FromSeconds(offsetInSeconds);
        string displayValue = offset.ToString(@"mm\.ss");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-15
          • 2013-05-21
          • 2015-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-19
          相关资源
          最近更新 更多