Bitcoin Forum
November 07, 2024, 10:32:36 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Подскажите по вычислению суммы в SafeMath solidity  (Read 126 times)
puina2010 (OP)
Newbie
*
Offline Offline

Activity: 80
Merit: 0


View Profile
October 10, 2018, 02:43:31 PM
 #1

Здравствуйте
имеем функцию трансфера 20%

Code:
//  Deposit / 5
        owner.transfer(msg.value.div(4));

Почему получается 4 ?
И к примеру как сделать перевод 15%
d34thkn3ll
Jr. Member
*
Offline Offline

Activity: 52
Merit: 1


View Profile
October 10, 2018, 05:15:04 PM
 #2

4 — очепятка, вероятно.

15% = 15 / 100, арифметика у нас целочисленная, емнип, так что в две операции — сначала умножаем на 15, потом делим на 100.
Code:
owner.transfer(msg.value.mul(15).div(100));
В целях незначительной экономии газа .div(const) можно заменить обратно на обычное деление
Code:
owner.transfer(msg.value.mul(15) / 100);
Хотя мне слабо верится, что кто-то зашлёт столько эфира, что произойдёт переполнение, так что можно и при умножении без SafeMath обойтись.
Code:
owner.transfer(msg.value * 15 / 100);

Looking for decentralized systems experts.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!