Здравствуйте есть число с типом
ulong
, допустим
100057
, необходимо поделить его на 5, при этом что бы число было целым, т.е. без остатка. Как это можно сделать?
Вообще проблема весьма глобальна.
Есть код:
using UnityEngine;
using UnityEngine.UI;
using System;
using Newtonsoft.Json;
public class TasksHelper : MonoBehaviour
{
public GameHelper gameHelper; // Экземпляр класса GameHelper
public Text task_progress_text; // Текстовое поле с прогрессом игрока
public Text task_target_text; // Текстовое поле с целью задачи
public Text task_type_text; // Текстовое поле с описанием задачи
public Text task_reward_text; // Текстовое поле с наградой
private SaveCurrentTask saveCurrentTask = new SaveCurrentTask();
public ulong reward;
public int clicks;
public int clicksTarget;
public ulong GetClickTaskReward(int target)
{
if (target == 1000)
{
gameHelper = GameObject.FindObjectOfType<GameHelper>();
Debug.Log("[TASK HELPER] - CLICK REWARD -> " + gameHelper.dollars / 5);
return gameHelper.dollars / 5;
}
else if (target == 1500)
{
gameHelper = GameObject.FindObjectOfType<GameHelper>();
Debug.Log("[TASK HELPER] - CLICK REWARD -> " + gameHelper.dollars / 4);
return gameHelper.dollars / 4;
}
else if (target == 2000)
{
gameHelper = GameObject.FindObjectOfType<GameHelper>();
Debug.Log("[TASK HELPER] - CLICK REWARD -> " + gameHelper.dollars / 3);
return gameHelper.dollars / 3;
}
else if (target == 5000)
{
gameHelper = GameObject.FindObjectOfType<GameHelper>();
Debug.Log("[TASK HELPER] - CLICK REWARD -> " + gameHelper.dollars / 2);
return gameHelper.dollars / 2;
}
else if (target == 10000)
{
gameHelper = GameObject.FindObjectOfType<GameHelper>();
Debug.Log("[TASK HELPER] - CLICK REWARD -> " + gameHelper.dollars);
return gameHelper.dollars;
}
else if (target == 15000)
{
gameHelper = GameObject.FindObjectOfType<GameHelper>();
Debug.Log("[TASK HELPER] - CLICK REWARD -> " + gameHelper.dollars * 2);
return gameHelper.dollars + gameHelper.dollars * 2;
}
else
{
gameHelper = GameObject.FindObjectOfType<GameHelper>();
return gameHelper.dollars + gameHelper.dollars * 5;
}
}
public void GetBalanceTask()
{
int key = UnityEngine.Random.Range(1, 100);
}
public int CountClickGetter(int key)
{
if (key > 0 & key < 20)
{
return 1000;
}
else if (key > 20 & key < 40)
{
return 1500;
}
else if (key > 40 & key < 60)
{
return 2000;
}
else if (key > 60 & key < 80)
{
return 5000;
}
else if (key > 80 & key < 100)
{
return 10000;
}
else
{
return 15000;
}
}
public void GetClickTask()
{
if (!PlayerPrefs.HasKey("Task"))
{
int key = UnityEngine.Random.Range(1, 100);
clicksTarget = CountClickGetter(key);
task_target_text.text = clicksTarget.ToString();
task_progress_text.text = clicks.ToString();
task_type_text.text = "TAP" + clicksTarget.ToString() + "TIMES";
gameHelper = GameObject.FindObjectOfType<GameHelper>();
reward = GetClickTaskReward(key);
if(reward == 0) { reward = 5000; }
task_reward_text.text = gameHelper.FormatMoney(reward);
PlayerPrefs.SetString("ClickTask", "active");
PlayerPrefs.SetString("Task", "a");
}
}
private void Start()
{
if (!PlayerPrefs.HasKey("SaveTask"))
{
GetClickTask();
}
else
{
saveCurrentTask = JsonConvert.DeserializeObject<SaveCurrentTask>(PlayerPrefs.GetString("SaveTask"));
clicks = saveCurrentTask.clicks;
reward = saveCurrentTask.reward;
clicksTarget = saveCurrentTask.clicksTarget;
}
}
private void Update()
{
if (PlayerPrefs.HasKey("Task"))
{
if (PlayerPrefs.HasKey("ClickTask"))
{
task_target_text.text = clicksTarget.ToString();
task_progress_text.text = clicks.ToString();
gameHelper = GameObject.FindObjectOfType<GameHelper>();
task_reward_text.text = gameHelper.FormatMoney(reward);
task_type_text.text = "TAP " + clicksTarget.ToString() + " TIMES";
if (clicksTarget <= clicks)
{
gameHelper.dollars += reward;
reward = 0;
clicks = 0;
clicksTarget = 0;
PlayerPrefs.DeleteKey("Task");
PlayerPrefs.DeleteKey("ClickTask");
GetClickTask();
}
saveCurrentTask.clicks = clicks;
saveCurrentTask.clicksTarget = clicksTarget;
saveCurrentTask.reward = reward;
string saveTaskJson = JsonConvert.SerializeObject(saveCurrentTask);
PlayerPrefs.SetString("SaveTask", saveTaskJson);
}
}
}
}
[Serializable]
class SaveCurrentTask
{
public int clicks;
public int clicksTarget;
public ulong reward;
}
Тут значение переменной reward при балансе 0, = 5000. Но вот на следующий круг, он дает уже ~30000, ошибок в коде вроде нету. Кто может объяснить почему так происходит?
Записей в консоли по типу
[TASK HELPER] - CLICK REWARD -> 5000
нету.