Как разделить без остатка на C#?

Rumata

Как разделить без остатка (не округлить а просто "отрезать" остаток после запятой) на C#?

UPD

Я пытаюсь простой таймер написать для Unity :)

  • Пользователь вводит часы, минуты и секунды, (для каждого своя переменная int).
  • Затем все это преобразуется в общее кол-во секунд и присваивается переменной float.
  • Каждкю секунду отнимается единица с помощью Time.deltaTime (последнее выдает float, поэтому и нужно было хранить секунды во float).
  • После чего секунды снова пересчитываются в часы,минуты и секунды и присваиваются соответствующим переменным.

    Вот тут и появляется проблема: Нужно либо конвертировать секунды из float в int, либо изначально все переменные сделать float но "отрезать" знаки после запятой.

2 ответа

Rumata

https://ideone.com/DTGGxw

using System;

public class Test
{
  public static void Main()
  {
    ****** x = 1e11;
    Console.WriteLine((long)x / 60);
    Console.WriteLine(Math.Floor(x / 60));
  }
}

И вообще, нет никакого смысла использовать дробные числа для времени. Используй целые секунды или миллисекунды, как везде.


Rumata

Понимаю, что это костыль и ужасный способ реализации, но он роботает

int a = 10, b = 3;
float c = a / b; //рекомендую сделать проверку (деление на ноль)

int result = 0; //ответ без остатка

string[] arr = c.ToString().Split(',', '.');
result = Convert.ToInt32(arr[0]);

Еще раз повторяю - это костыль.

Если есть другой способ реализации - предлагайте. Не стоит минусовать данный ответ, лучше свой предложите. Всем удачи :)

licensed under cc by-sa 3.0 with attribution.