Question: I have an HTML input element and I'm trying to force a single decimal place into the input after the user changes the value. So, let's say the user enters "4", I run this code:

```
this.value = this.value.toFixed(1)

```

but then I get a JavaScript error saying "Object 4 has no method 'toFixed'".

It seems like JavaScript is trying to process a literal as a Number and failing but, er, why? And how do I avoid it?

Answer: 
`this.value` is a `String` when you get it from an input element. You need to cast it to a number before you can use a number's methods on it:

```
this.value = Number(this.value).toFixed(1);

```

Alternatively you can use the unary `+` operator to cast the string to a number:

```
this.value (+this.value).toFixed(1);

```

If you need to remove string suffixes, then you could use `parseFloat`:

```
this.value = parseFloat(this.value).toFixed(1);

```

However, it's worth noting that `parseFloat` *does not* handle hexadecimal formats while casting to `Number` *does*:

```
this.value = +'0xF'; //15
this.value = parseFloat('0xF'); //0

```
convert to a Number first,

```
this.value = Number(this.value).toFixed(1);

```

`this.value` is a String, and a string does not have the `toFixed` method.