Существует также .isInstance
метод на" Class
" класс. если Вы получаете класс объекта через myBanana.getClass()
, Вы видите, является ли Ваш объект myApple
экземпляром того же класса как myBanana
через
myBanana.getClass().isInstance(myApple)
Умножьте свой рейтинг на 2, затем округлите, используя Math.Round (rating, MidpointRounding.AwayFromZero)
, затем разделите это значение на 2.
Math.Round ( значение * 2, MidpointRounding.AwayFromZero) / 2
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);
Multiply by 2, round, then divide by 2
if you want nearest quarter, multiply by 4, divide by 4, etc
Есть несколько вариантов. Если производительность вызывает беспокойство, проверьте их, чтобы определить, какой из них работает быстрее всего в большом цикле.
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;
}
Похоже, вам нужно округлить до ближайшего 0,5. Я не вижу версии round
в C # API, которая делает это (одна версия требует округления до ряда десятичных цифр, что не одно и то же).
Предполагая, что вам нужно только иметь дело с целыми числами, равными десяткам, достаточно вычислить round (num * 2) / 2
. Если вы используете произвольно точные десятичные дроби, это становится сложнее. Будем надеяться, что нет.
У меня возникли трудности с этой проблемой, так как хорошо. Я кодирую в основном 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);
Вот и все. Обратите внимание на использование чисел и целых чисел и способ их обработки.
Удачи!