title: Avoid deserializing a JSON string token to a numeric property
body: <p>The JSON looks like this:</p>
  
  <pre><code>{
      "x": "50"
  }
  </code></pre>
  
  <p>And the class looks like this:</p>
  
  <pre><code>public class Test
  {
      public float? x { get; set; }
  }
  </code></pre>
  
  <p>And when using </p>
  
  <pre><code>var test = JsonConvert.DeserializeObject&lt;Test&gt;(json);
  </code></pre>
  
  <p>No exception is thrown, JSON.NET just converts the string value "50" into a float value 50.0.</p>
  
  <p>This question is raised in the the context of input-validation. I want to get an exception, because the JSON string does not comply to the contract (the <code>x</code> field should be a real float).</p>
  
  <p>And I don't want to use property annotations in the 'Test' class.</p>
  
  <p>Is there a JsonSerializerSettings which can be be used to avoid this?</p>