以太坊 Solidity 中的划分

2024-01-01

我正在创建一个发行代币的合约。我希望持有代币的账户能够检查他们拥有的所有代币所占的百分比。我知道以太坊还没有实现浮点数。我应该怎么办?


在客户端而不是在 Solidity 中执行该计算可能是最好的(最低的 Gas 成本并且实施起来很简单)。

如果您发现在 Solidity 中需要它,那么只需通过移动小数点来处理整数即可。如同:https://en.wikipedia.org/wiki/Parts-per_notation https://en.wikipedia.org/wiki/Parts-per_notation

例如,此函数让您决定精度并使用一个额外的精度来正确舍入:

pragma solidity ^0.4.6;

contract Divide {

  function percent(uint numerator, uint denominator, uint precision) public 

  constant returns(uint quotient) {

         // caution, check safe-to-multiply here
        uint _numerator  = numerator * 10 ** (precision+1);
        // with rounding of last digit
        uint _quotient =  ((_numerator / denominator) + 5) / 10;
        return ( _quotient);
  }

}

如果你喂它 101,450,3 你会得到 224,即 22.4%。

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以太坊 Solidity 中的划分 的相关文章

  • Solidity 将十六进制数字转换为十六进制字符串

    我需要存储这种值0xff0000 or 0x00ff08 十六进制颜色表示 在 Solidity 智能合约中 并能够在合约内将其转换为具有相同文本字符的字符串 ff0000 我打算在 RSK 上部署这个智能合约 我的想法是将这些值存储在by
  • Solidity如何使用元组(嵌套abi)进行函数签名?

    struct Test uint ui string s function test Test t public emit Log t ui t s 我对ABI有一些了解 我使用实验性 ABIEncoderV2 选项签订了这份合同 总之 这
  • 如何在测试之间重置 Hardhat 的主网分叉?

    我正在使用 Hardhat 的主网分支在 Hardhat 中编写单元测试 但是一项测试的结果似乎会影响未来的测试并导致我的断言失败 我正在使用 Alchemy 和区块 14189520 进行分叉 例如 it Test 1 async fun
  • 以太坊 Web3.js:内在 Gas 太低

    在过去的几天里 我一直在尝试在以太坊测试网 Rinkeby 上发送一笔交易 无论我将 Gas 增加多少 都会不断收到此错误 未处理的拒绝错误 返回错误 内在气体太低 我发送的数据是 0x7b22416e7377657273223a5b7b2
  • 将三个整数编码为单个整数

    我必须将 3 个数字编码为同一个整数 我有这 3 个测量值 uint256 carLength uint256 carWidth uint256 carDepth 我想将这 3 个数字编码为同一个整数 并且可以解码 我的问题是我在这么低的水
  • Solidity:在公共方法中返回数组

    我正在尝试创建一个返回数组的公共函数 这是错误 返回参数类型映射 uint256 gt struct ItemList Item storage ref 不能隐式转换为预期类型 第一个的类型 返回变量 uint256 内存 pragma s
  • 指定的输入源无效

    使用 remix IDE 构建智能合约时 通过以下导入收到无效的输入源指定错误 import https github com aave flashloan box blob Remix contracts aave FlashLoanRe
  • 是否可以在 Solidity 智能合约创建上预留一个地址用于收税?

    我正在使用 Solidity 编程语言 并尝试实现一个合约 即每笔交易都会扣除税费 并且该税费应该转移到正在创建的合约的某个特定地址 那可能吗 是的 这是可能的 所有以太坊代币标准 ERC 20 ERC 721 仅定义一个接口和很少的其他点
  • 如何使用 web3.js 1.0 进行身份验证和发送合约方法

    我对如何使用 web3 1 0 库执行合约的方法感到困惑 此代码有效 只要我先手动解锁帐户 var contract new web3 eth Contract contractJson contractAddress contract m
  • 使用 ethers js 运行安全帽测试时,合约事件侦听器不会触发

    这是一个非常小的存储库来显示该问题 https github com adamdry ethers event issue https github com adamdry ethers event issue 但我也会在这里解释一下 这是
  • ERROR 发送和传输仅适用于应付地址类型的对象,不适用于地址

    function finalizeRequest uint index public restricted Request storage request requests index require request approvalCou
  • RuntimeError:使用 docker 关闭连接后无法重用套接字

    我正在关注本教程 https github com getamis eth indexer blob master README md fbclid IwAR3g3SAjJ9ik hHCFkol2k8YXo0GvBL15oSNC hIU38
  • 如何获取以太坊账户余额?

    如何以编程方式发现以太坊区块链上给定账户中有多少 ETH 在网上 不是程序化的 而是为了完整性 如果您只想获取帐户或合约的余额 您可以访问http etherchain org http etherchain org or http eth
  • ERC20:津贴不足

    我创建了两个代币 YAY e sYAY 和一个 StakeRewards 智能合约 代码如下 SPDX License Identifier MIT pragma solidity 0 8 0 import openzeppelin con
  • 如何发送wei/eth到合约地址? (使用truffle javascript测试)

    我正在尝试将 wei eth 发送到我的 Solidity 合约的地址 该合约具有外部应付回退功能 我下面的 truffle javascript 测试不会导致 instance address 的余额获得任何 wei instance a
  • 这个套利机器人真的能正常运行吗?

    我一直在研究创建某种形式的加密货币套利交易机器人 最近看到了以下视频 该视频展示了一个套利机器人 该机器人通过部署到币安智能链的智能合约上的单个函数调用来运行 我已经查看了合约的代码 但不确定它是否能真正发挥作用 或者它是否是一个骗局合约
  • NPM 无法在 Windows 上安装“truffle”

    我正在尝试使用 npm 安装 truffle 但我不熟悉 NodeJS 并且不明白为什么 npm 不会安装它 我尝试npm install g truffle在具有管理员权限的 Powershell 中 经过几行输出后 我收到以下错误消息块
  • 尚不支持将 struct memory[] 类型内存复制到存储

    如何将新的空父实例添加到下面代码示例中的父实例列表中 我不断得到 UnimplementedFeatureError Copying of type struct Test Child memory memory to storage no
  • 如何导入 AggregatorV3Interface

    我正在尝试导入 AggregatorV3 但找不到该文件 这是我的代码 提前抱歉 我仍然是一名初学者程序员 SPDX License Identifier MIT pragma solidity 0 8 9 import chainlink
  • Chainlink - 工作没有完成

    我一直在学习 Chainlink API 并尝试构建一个简单的合约 该合约将对 API 进行外部调用 并根据 Oracle 请求的结果向用户收费 例如 如果 API 导致以下结果 我们将向您收取 1 美元费用 true如果结果是 0 25

随机推荐

  • 点加速最快路径

    这只是我自己想出的东西 但这似乎是一个有趣的问题 它让我难住了 您在二维空间中有一组点 其中一个点指定为 起点 一个点指定为 终点 每个点都有坐标 以米为单位距原点 但也有一个 加速度数 以米 秒的 delta V 为单位 到达某个点 包括
  • 如何在不使用 ZipArchive 的情况下在 Windows 8 Metro 中解压缩 ZIP 文件 (zlib.net)

    我有一个用 C 编写的 Windows 8 Metro 应用程序 我需要打开一个 ZIP 文件并读取其中包含的 XML 文件 我使用了 ZipArchive 类 但它在当前版本中出现了错误 并且不再起作用 还有别的办法吗 我尝试用谷歌搜索其
  • 在“堆栈”>“不透明度”>“可滚动”下换行时出现颤动键盘问题

    在 flutter 应用程序中 当输入字段包含在 Scrollable Opacity Stack 中时 当键盘出现时 可滚动视图未正确放置 当键盘出现时如何正确地使可滚动视图 如果输入字段没有包含在 Scrollable 中 则键盘根本不
  • Docker Toolbox/Mac 安装后设置 DOCKER_HOST

    麦克在这里 我通过安装 Docker工具箱 https www docker com toolbox所有 Docker 命令都会产生相同的错误 myuser mymachine tmp docker info Get http var ru
  • Android 上使用外部 Jar 时出现 java.lang.NoSuchMethodError sun.misc.Unsafe

    我正在尝试在 Android 上使用 Java 库 jar 它使用sun misc Unsafe 对库的调用会抛出 java lang NoSuchMethodError No virtual method ensureClassIniti
  • 将文件从一个 Node js 服务器发送到另一台

    所以在第一台服务器上我有这样的路线 const express require express const router express Router const FormData require form data const fetch
  • Node.js 异步系列函数的参数

    我需要执行如下代码 function taskFirst k v console log k v function taskSecond k v console log k v function run var g1 Something v
  • PDB不会在断点处停止

    我对直接使用 pdb 进行调试还很陌生 并且在调试 Django 应用程序时遇到了一些问题 这是我正在做的事情 python m pdb manage py runserver pdb b core views py 22 Breakpoi
  • 如何在reactJS中自定义reactstrap下拉菜单

    使用 ReactJS 创建示例应用程序并为 boostrap 安装 Reactstrap 我在工作正常的应用程序中使用下拉组件 代码是
  • 在 Erlang 中解析 JSON

    我有一段 JSON 字符串 我想在 Erlang 中解析它 看起来像 id1 str1 str2 str3 id2 str4 str5 我查看了 mochijson2 和其他几个 JSON 解析器 但我真的不知道该怎么做 非常感谢任何帮助
  • Jasmine 单元测试中模拟 AngularJS 模块依赖关系

    我试图在将其他模块作为依赖项的模块内对控制器代码进行单元测试 但无法弄清楚如何正确模拟它们 我正在使用 Jasmine 框架并使用 Karma Testaulous 运行我的测试 模块代码 var app angular module ev
  • 如何检查 DNS 服务器是否设置为“自动获取”

    当我使用网卡设置的 DNSServerSearchOrder 属性获取服务器 DNS 设置时 它会返回自动解析到的 DNS 服务器 而不是指示其动态的值 例如 null 例如 要将我的 DNS 服务器设置为 自动获取 我会执行以下操作 Ma
  • 如何在 C++ 中使用 setenv() 导出变量?

    我需要导出几个变量 使它们在命令行中如下所示 export ROS HOSTNAME xxx 如何在 C 中使用 setenv 来实现这一目标 Thanks 来自setenv 手动输入 SYNOPSIS include
  • Javascript - 获取任何键盘布局的按键描述

    For a rich web application I need keyboard shortcuts Because there are many different keyboard layouts they have to be c
  • 识别给定类的所有对象以进行进一步处理

    假设您正在使用一个大型工作环境 并且您不太擅长跟上环境变量 或者您有一些自动生成大量对象的进程 有没有办法扫描你的ls 识别具有给定类的所有对象 考虑以下简单示例 Random objects in my environment x lt
  • 如何使用 SQL Server 2008 将学生成绩分为五分位数

    谁能帮我将学生成绩分为五等分吗 我认为 SQL Server 2012 中有一个功能 但我们还没有t upgraded to it as we are using 2008R2 I triedNtile 5 但它没有生成所需的结果 我需要低
  • 在 intel xdk 中构建应用程序:您是否需要构建 cordova 才能使用 cordova api

    我刚刚了解了英特尔 xdk 我正在研究它的工作原理以及生成应用程序的步骤 但是 我在理解它时陷入了困境 你能为我澄清一些事情吗 据我了解 Intel XDK 默认提供扩展 cordova api 的 api 因此 cordova api 包
  • 如何创建使用单独进程的 Android Activity 和 Service

    我有一个 Android 应用程序 其中包含一个活动和一个服务 目前它们都存在于同一进程中并使用相同的堆 但我希望必须为服务分离进程 堆 IE 我希望服务完全独立于活动 这样如果活动崩溃就不会影响服务 然而 我确实希望它们可以作为单个应用程
  • C语言中如何连接两个字符串?

    如何添加两个字符串 I tried name derp herp 但我得到一个错误 表达式必须具有整型或枚举类型 C 不支持其他一些语言所具有的字符串 C中的字符串只是一个指向数组的指针char由第一个空字符终止 C中没有字符串连接运算符
  • 以太坊 Solidity 中的划分

    我正在创建一个发行代币的合约 我希望持有代币的账户能够检查他们拥有的所有代币所占的百分比 我知道以太坊还没有实现浮点数 我应该怎么办 在客户端而不是在 Solidity 中执行该计算可能是最好的 最低的 Gas 成本并且实施起来很简单 如果