首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >溶质变化百分比的计算

溶质变化百分比的计算
EN

Ethereum用户
提问于 2017-06-18 17:14:32
回答 1查看 1.1K关注 0票数 1

因此,我使用Remix并有以下代码:

代码语言:javascript
运行
复制
pragma solidity ^0.4.11;

contract Negs {

  event Print(string _name, uint _value);

  function Test() {
    var startValue = 1000;
    var endValue = 800;
    Print ("Change1 - ", endValue / startValue);
    Print ("Change2 - ", 10*endValue / startValue);
    Print ("Change3 - ", 100*endValue / startValue);
    Print ("Change4 - ", 1000*endValue / startValue);
  }

}

然后查看一下右边的“启动测试”小框中的事件,得到以下值:

  • 变化1-0
  • 变化2-8
  • 变化3- 14
  • 变化4- 13

我知道变化1应该是零,因为没有小数,得到了that..but,其他的呢?为什么Change3不是80岁,change4 800岁呢?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2017-06-18 18:02:35

在稳固性中,var是在第一次分配时确定类型,并采取任何适合的类型。阅读警告这里。因此,您的代码转换为:

代码语言:javascript
运行
复制
uint16 startValue = 1000;
uint16 endValue = 800;

然后,您的计算就会溢出,因为它会转换为:

代码语言:javascript
运行
复制
(100*800 % (2**16)) / 1000 = 14

代码语言:javascript
运行
复制
(1000*800 % (2**16))/1000 = 13

小心var,并为它分配一个您知道在运行时会很好的类型!此外,无论何时需要适当的SafeMath图书馆,都要使用secure+safe。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/18266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档