You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solidity中支持执行指定浮点数运算及数学表达式吗?

Solidity 运算可行性分析

关于 100 - (100 * 0.01) = 98.9 的运算

Solidity 不支持直接使用字面量浮点数(如0.01)进行运算,原生的整数类型(uint、int)仅能处理整数。虽然Solidity 0.8.0及以上版本引入了fixed/ufixed定点数类型,但这类类型存在精度限制,实际开发中几乎不会直接使用——行业通用做法是将数值放大为整数处理(比如把0.01表示为1,对应100表示为10000,运算后再缩小比例)。

如果直接写100 - (100 * 0.01),编译器会抛出错误,因为无法识别浮点数字面量。若要实现类似逻辑,需要用整数模拟:

// 放大100倍,0.01对应1,100对应10000
uint256 result = 10000 - (10000 * 1) / 100; // 结果为9900,对应实际值99.0

注意这里结果是99而非98.9,因为整数运算会截断小数部分,若要更精确的小数处理,需自定义定点数逻辑或使用成熟的定点数库。

关于 10 / (10 * 10) 的运算

这个运算可以执行,但结果和预期的小数不同。Solidity的整数除法是截断取整(舍去小数部分),运算过程如下:

  1. 先计算括号内的10 * 10 = 100
  2. 再执行10 / 100,整数除法结果为0(而非0.1)

对应的Solidity代码示例:

uint256 result = 10 / (10 * 10); // result 的值为0

内容的提问来源于stack exchange,提问作者Руслан Миров

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:24:28