【问题标题】:Having trouble in adding number in 0.0 decimal以 0.0 十进制添加数字时遇到问题
【发布时间】:2016-06-02 02:08:34
【问题描述】:

我正在使用 react.js 来表达我的一些观点!我将我的列 max_budget 更改为十进制并将默认值添加为 0,所以现在默认值为 0.0! 我有一个按钮,点击它,每次点击它都会增加 2 到最大预算!我面临的问题! 默认值为 0.0,每次我单击按钮将 2 添加到该 0.0 以使其成为 2.0 时,它会搞砸并在 0.0 的末尾添加 2 作为 0.02,如果我按几次它会在末尾添加 2 就像0.022222 按钮代码是:

  changeTip: (e) ->
e.preventDefault()
name = e.currentTarget.name # http://www.w3schools.com/jsref/event_currenttarget.asp
if name == "increase"
  max_budget = @props.max_budget + 2
else
  max_budget = @props.max_budget - 2
data = max_budget: max_budget
@props.saveJobValues(data)

我应该如何修复它所以添加 2 它显示我是 2.0 而不是 0.02

【问题讨论】:

  • 显然@props.max_budget 是一个字符串而不是一个浮点数。您可以使用parseFloat(@props.max_budget) 将其转换为浮动。
  • @props.max_budget 是一个小数,默认为 0.0
  • parseFloat 效果很好!现在它工作正常,如果我加 2,它会变成 0.0 到 2!但我不加 2.0 它只是加 2 我想要它到小数点后 1 位!
  • 在数据库中可能是小数,但在这段代码中是字符串。
  • 并且每次我输入 0. 在框中它使它为零!这 ”。”让它为零

标签: ruby-on-rails reactjs coffeescript


【解决方案1】:

将 HTML5 与

结合使用
<input type="number" min="1.0" max="5.0" step="0.01">

只接受浮点值作为输入。它将接受“。”后跟数字,但拒绝“.”,(&lt;input type="number" min="1" max="5"&gt; 表示小数。)

将您的代码更改为

  changeTip: (e) ->
e.preventDefault()
name = e.currentTarget.name # http://www.w3schools.com/jsref/event_currenttarget.asp
if name == "increase"
  max_budget = parseFloat(@props.max_budget) + 2.0
else
  max_budget = parseFloat(@props.max_budget) - 2.0
data = max_budget: max_budget
@props.saveJobValues(data)

(添加 parseFloat 作为@Mischa 提到的)。为了便于阅读,我建议将“2”写为“2.0”(这样更容易看出您处理浮点数)

【讨论】:

  • 试过了!但仍然拒绝“.”并使该字段为空
  • 即使我写“2”。或“.”它使该字段为空
  • 您使用哪种浏览器(版本、移动设备?、操作系统)? caniuse.com/#search=number 中的一个?否则使用 polyfill github.com/jonstipe/number-polyfill 或者你必须检查 NULL
  • 使用 chromo 最新版本,使用 Mac IOS 和另外一个认为我在 REACT.JS 中这样做
猜你喜欢
  • 2013-05-22
  • 2012-05-15
  • 2013-09-05
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2013-02-18
相关资源
最近更新 更多