Как делают меня вокруг к ближайшим 0.5?

Существует также .isInstance метод на" Class" класс. если Вы получаете класс объекта через myBanana.getClass(), Вы видите, является ли Ваш объект myApple экземпляром того же класса как myBanana через

myBanana.getClass().isInstance(myApple)

94
задан Neil N 25 August 2009 в 16:46
поделиться

6 ответов

Умножьте свой рейтинг на 2, затем округлите, используя Math.Round (rating, MidpointRounding.AwayFromZero) , затем разделите это значение на 2.

Math.Round ( значение * 2, MidpointRounding.AwayFromZero) / 2

192
ответ дан 24 November 2019 в 05:59
поделиться
decimal d = // your number..

decimal t = d - Math.Floor(d);
if(t >= 0.3d && t <= 0.7d)
{
    return Math.Floor(d) + 0.5d;
}
else if(t>0.7d)
    return Math.Ceil(d);
return Math.Floor(d);
1
ответ дан 24 November 2019 в 05:59
поделиться

Multiply by 2, round, then divide by 2

if you want nearest quarter, multiply by 4, divide by 4, etc

61
ответ дан 24 November 2019 в 05:59
поделиться

Есть несколько вариантов. Если производительность вызывает беспокойство, проверьте их, чтобы определить, какой из них работает быстрее всего в большом цикле.

double Adjust(double input)
{
    double whole = Math.Truncate(input);
    double remainder = input - whole;
    if (remainder < 0.3)
    {
        remainder = 0;
    }
    else if (remainder < 0.8)
    {
        remainder = 0.5;
    }
    else
    {
        remainder = 1;
    }
    return whole + remainder;
}
1
ответ дан 24 November 2019 в 05:59
поделиться

Похоже, вам нужно округлить до ближайшего 0,5. Я не вижу версии round в C # API, которая делает это (одна версия требует округления до ряда десятичных цифр, что не одно и то же).

Предполагая, что вам нужно только иметь дело с целыми числами, равными десяткам, достаточно вычислить round (num * 2) / 2 . Если вы используете произвольно точные десятичные дроби, это становится сложнее. Будем надеяться, что нет.

1
ответ дан 24 November 2019 в 05:59
поделиться

У меня возникли трудности с этой проблемой, так как хорошо. Я кодирую в основном ActionScript 3.0, который является базовым кодом для платформы Adobe Flash, но есть аналогии на языках:

Решение, которое я придумал, следующее:

//Code for Rounding to the nearest 0.05
var r:Number = Math.random() * 10;  // NUMBER - Input Your Number here
var n:int = r * 10;   // INTEGER - Shift Decimal 2 places to right
var f:int = Math.round(r * 10 - n) * 5;// INTEGER - Test 1 or 0 then convert to 5
var d:Number = (n + (f / 10)) / 10; //  NUMBER - Re-assemble the number

trace("ORG No: " + r);
trace("NEW No: " + d);

Вот и все. Обратите внимание на использование чисел и целых чисел и способ их обработки.

Удачи!

-1
ответ дан 24 November 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: