error CS0664: Literal of type double cannot be implicitly converted to type `float'. Add suffix `f' to create a literal of this type

Can anybody please tell me what this error means? Well here is my script. Please correct any other mistakes I made.

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

	public float speed = 8;
	public float acceleration = 12;

	private float currentSpeed;
	private float targetSpeed;
	private Vector2 amountToMove;

	private PlayerPhysics playerPhysics;

	// Use this for initialization
	void Start () {
		playerPhysics = GetComponent<PlayerPhysics>();

	// Update is called once per frame
	void Update () {
		targetSpeed = Input.GetAxisRaw ("Horizontal") * speed;
		currentSpeed = IncrementTowards (currentSpeed, targetSpeed, acceleration);

	private float IncrementTowards(float n, float target, float speed) {
		if (n == target) {
			return 0.0; //this is the line it says the error was on.
				} else {
						float dir = Mathf.Sign (target - n);
						n += Time.deltaTime * dir;
						return (dir == Mathf.Sign (target - n)) ? n : target;

Put an “f” after any number like 0.2, 0.0, 6.7 etc

The error is quite explicit. There are multiple types of floating point values. The type float is 4 bytes long and type double is 8 bytes long, which gives double more precision than float. As such, when you declare a literal, say “0.2”, the compiler needs to know precisely what type you are using. Leaving it without a postfix character means it’s a double (i.e. 0.2, 1.4, 3.435545). Add “f” to the end to tell the compiler it is a float (0.2f, 1.4f, etc). Additionally, to make things more confusing, if you leave off the decimal point, that is also valid. In your case, you can say 0, instead of 0.0. The compiler knows you are safe to use a floating point since you have nothing after the decimal, so precision is not a concern. Also, you can use 0.0f. I almost wish they would allow 0.0, but then we would get lazy.