# IComparable error due to float

**URL:** https://discussions.unity.com/t/icomparable-error-due-to-float/147612
**Category:** Questions & Answers
**Created:** [August 31, 2015, 9:04pm UTC](https://discussions.unity.com/t/icomparable-error-due-to-float/147612 "2015-08-31T21:04:46Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![NightLucididty](https://avatars.discourse-cdn.com/v4/letter/n/9dc877/32.png) [@NightLucididty](https://discussions.unity.com/u/NightLucididty)
#### Post date: [August 31, 2015, 9:04pm UTC](https://discussions.unity.com/t/icomparable-error-due-to-float/147612/1 "2015-08-31T21:04:46Z")

</div>

I am writing a list for my game,

But as I need it to have a string and a float,

So I am using unity’s script in for this purpose but I want to use a float instead of unity’s use of an int, This is unity’s code with my changes in float’s but I am still getting the error:

> Assets/PlayerMovement.cs(9,14): error CS0738: `PlayerMovement' does not implement interface member `System.IComparable.CompareTo(PlayerMovement)’ and the best implementing candidate `PlayerMovement.CompareTo(PlayerMovement)' return type `float’ does not match interface member return type `int’

```
using UnityEngine;
using System.Collections;
using System; //This allows the IComparable Interface

//This is the class you will be storing
//in the different collections. In order to use
//a collection's Sort() method, this class needs to
//implement the IComparable interface.
public class PlayerMovement : IComparable<PlayerMovement>
{
	public string movementName;
	public float timeOfMovement;
	
	public PlayerMovement(string newMovementName, float newTimeOfMovement)
	{
		movementName = newMovementName;
		timeOfMovement = newTimeOfMovement;
	}
	
	//This method is required by the IComparable
	//interface. 
	public int CompareTo(PlayerMovement other)
	{
		if(other == null)
		{
			return 1;
		}
		
		//Return the difference in power.
		return timeOfMovement - other.timeOfMovement;
	}
}

```

How can I remove this error and still use floats in my list,  
Thanks in advance,  
NightLucidity

---

<div class="post-metadata">

### Author: ![Dave-Carlile](https://avatars.discourse-cdn.com/v4/letter/d/ac91a4/32.png) [@Dave-Carlile](https://discussions.unity.com/u/Dave-Carlile)
#### Post date: [August 31, 2015, 9:06pm UTC](https://discussions.unity.com/t/icomparable-error-due-to-float/147612/2 "2015-08-31T21:06:35Z")

</div>

I think you’re misunderstanding the purpose of the [CompareTo](https://msdn.microsoft.com/en-us/library/system.icomparable(v=vs.110).aspx) function. It returns \< 0 if the current object should sort before the other object, \> 0 if it’s after, and 0 if they’re equal. The data type must be `int` because that’s the definition of the interface, and the data type has no relationship to any other data type in your class. It’s simply a way to return the relationship between two objects (-1, 0, +1).
