[C#]Health Regeneration and Delay

So I am trying to make a health regeneration system but I have run into a few problems, the first one being that because time.deltatime is a float, instead of my health regenerating like it should (91-92-93 and so on) it regenerates but there are a ton of decimals (ex. 91.81238%) I was wondering how to fix this problem to have my health only regenerate in whole number increments. The other thing I am trying to do is create a 10 second delay between when the last time my character took damage, till when the regeneration actually starts. Code is below and thank you in advance.

using UnityEngine;
using System.Collections;

public class PlayerHealth : MonoBehaviour {
	public int maxHealth = 100;
	public float curHealth = 100;
	public float regeneration = 5;


	public float healthBarLength;

	// Use this for initialization
	void Start () {

		healthBarLength = Screen.width / 2;
	
	}

	// Update is called once per frame
	void Update () {
				
		AdjustCurrentHealth (0);
	

		if (curHealth < maxHealth)
						curHealth += regeneration * Time.deltaTime;;


	}

	void OnGUI() {
		GUI.Box (new Rect (900, 870, healthBarLength, 20), curHealth + "/" + maxHealth);



		}
	public void AdjustCurrentHealth(int adj) {
		curHealth += adj;



		if (curHealth < 0)
						curHealth = 0;

		if (curHealth > maxHealth)
						curHealth = maxHealth;

		if (maxHealth < 1)
						maxHealth = 1;

		healthBarLength = (Screen.width / 2) * (curHealth / (float)maxHealth);


		}


}

I do it like this; you’d have to fill in the blanks and modify to your set up

void Update() {

	// If game is paused, don't do any of this
	if (QM_Utils.gamePaused)
					return;

	if(curHealth != maxHealth && !isRegenHealth) {
		StartCoroutine(RegainHealthOverTime());
	}
}

	private IEnumerator RegainHealthOverTime() {
	isRegenHealth = true;
	while (curHealth < maxHealth) {
		AdjustCurrentHealth (1);
		CalcHealthPct (curHealth);
		yield return new WaitForSeconds (healthRegenRate);
			}
	isRegenHealth = false;
}

In Start() put:

InvokeRepeating("Regenerate", 0.0f, 1.0 / regeneration);

Then write the function Regenerate():

void Regenerate() {
    if (curHealth < maxHealth)
             curHealth += 1.0f;
}

Or if you make curHealth and ‘int’, you can just do curHealth++.

This is great, based on what you did I made my part of this script like this:

public class Health : MonoBehaviour {

	public int startingHealth = 100;
	public int currentHealth;
	public int healthReg;

	bool isRegenHealth;


	void Awake ()
	{
		currentHealth = startingHealth;
	}


	void Update() 
	{
		if(currentHealth != startingHealth && !isRegenHealth) 
		{
			StartCoroutine(RegainHealthOverTime());
		}
	}


	private IEnumerator RegainHealthOverTime() 
	{
		isRegenHealth = true;
		while (currentHealth < startingHealth) 
		{
			Healthregen ();
			yield return new WaitForSeconds (1);
		}
		isRegenHealth = false;
	}


	public void Healthregen() 
	{
		currentHealth += healthReg;
		
	}

Legend say he’s still waiting for the answer. and his players health is always full.

if you place a timestamp in one script but you take damage in the other. then your time stamp either never gets activated or is never called. so like robertbu said the answer is timestamp where you take damage. and then if you want to call the timestamp, call it in your other script.